Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 尝试更改sqlite数据库中字段的部分值_String_Sqlite_Replace_Partial - Fatal编程技术网

String 尝试更改sqlite数据库中字段的部分值

String 尝试更改sqlite数据库中字段的部分值,string,sqlite,replace,partial,String,Sqlite,Replace,Partial,我需要更新相当大的sickbeard.db中的部分值。 数据库中的一行如下所示: "66" "305288" "1" "Stranger Things" "/media/tv1/Stranger Thins" "Netflix" "|Adventure|Drama|Fantasy|Horror|Mystery|" "Scripted" "50" "3" "Friday 3:00 AM" "Continuing" "0" "0" "2016" "0" "

我需要更新相当大的sickbeard.db中的部分值。 数据库中的一行如下所示:

"66"    "305288"    "1" "Stranger Things"   "/media/tv1/Stranger Thins" "Netflix"   "|Adventure|Drama|Fantasy|Horror|Mystery|"  "Scripted"  "50"    "3" "Friday 3:00 AM"    "Continuing"    "0" "0" "2016"  "0" "en"    "0"     "tt4574334" "737297"    "0"     ""  ""  "0" "0" "0" "3" 
在位置字段中,我需要更改的数据是“/media/tv1/Some tv show”,但我需要将其更改为“/media/tv/tv1/Some tv show”。此字段包含/media/tv1或/media/tv2,我想添加电视,使字段如下所示:/media/TV/tv1

我一直在尝试:
UPDATE tv_shows SET location=replace(“/media/tv%”、“%tv%”、“%tv/tv%”)
但它只会更改为/media/tv%(之后会删除所有内容)。这当然会破坏应用程序

我真的不想在gui中手工操作

UPDATE tv_shows SET location = replace(location, '/media/', '/media/TV/');
假设要更改的列名为
location


假设要更改的列名为
location

,首先,根据,参数如下

更换(原件、查找、更换)

替换不接受模式。请注意,原始字符串必须显式传递给函数。(没有获取原始字符串的自动上下文。)其次,如果要确保原始字符串与特定模式匹配,例如,不在其他可能的匹配中进行替换,则需要WHERE子句来限制选择。与原始字符串参数一样,没有基于参数应用的自动条件。。。必须使用WHERE子句正确限制更新:

UPDATE tv_shows 
SET location = replace(location, '/media/tv', '/media/TV/tv')
WHERE location LIKE '/media/tv%'


注意:由于
replace()
的失败匹配返回原始字符串,因此仅对每一行执行此操作可能不会产生明显的负面影响,特别是如果您希望仅在路径字符串的开头进行匹配。但是,最好包含一个适当的WHERE子句,以提高命令的效率(只更新必要的内容),并限制错误代码的负面影响(如果表达式错误,则无需损坏表中的每一行,至少只限于一个子集)。

首先,根据,参数如下

更换(原件、查找、更换)

替换不接受模式。请注意,原始字符串必须显式传递给函数。(没有获取原始字符串的自动上下文。)其次,如果要确保原始字符串与特定模式匹配,例如,不在其他可能的匹配中进行替换,则需要WHERE子句来限制选择。与原始字符串参数一样,没有基于参数应用的自动条件。。。必须使用WHERE子句正确限制更新:

UPDATE tv_shows 
SET location = replace(location, '/media/tv', '/media/TV/tv')
WHERE location LIKE '/media/tv%'


注意:由于
replace()
的失败匹配返回原始字符串,因此仅对每一行执行此操作可能不会产生明显的负面影响,特别是如果您希望仅在路径字符串的开头进行匹配。但是,最好包含一个适当的WHERE子句,以提高命令的效率(只更新必要的内容),并限制错误代码的负面影响(如果表达式错误,则无需损坏表中的每一行,至少只限于一个子集)。

您知道函数
replace()
。你有没有检查和测试过他们,而不是仅仅假设他们在做什么?您是否在堆栈溢出中搜索了
sqlite replace函数
?您知道函数
replace()
。你有没有检查和测试过他们,而不是仅仅假设他们在做什么?您是否在堆栈溢出中搜索了
sqlite replace function
?仅供参考,最好注意
replace()
是区分大小写的,而
LIKE
的默认行为是不区分大小写的。GLOB是一个区分大小写的可选关键字。还可以注册并使用诸如REGEX之类的自定义函数来执行更高级的匹配。仅供参考,最好注意
replace()
区分大小写,而
like
的默认行为不区分大小写。GLOB是一个区分大小写的可选关键字。也可以注册并使用像REGEX这样的自定义函数来进行更高级的匹配。