String 尝试更改sqlite数据库中字段的部分值
我需要更新相当大的sickbeard.db中的部分值。 数据库中的一行如下所示: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" "
"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这样的自定义函数来进行更高级的匹配。