我需要更新数据库中的某些表,用一个单词替换另一个单词,但是问题是它不必区分大小写。我不想为大写和小写的每种组合进行咨询:
UPDATE theme SET message = REPLACE(message,'ToreCube','star');
UPDATE theme SET message = REPLACE(message,'Torecube','star');
UPDATE theme SET message = REPLACE(message,'toreCube','star');
UPDATE theme SET message = REPLACE(message,'torecube','star');
我也希望单词之间的间隔无法区分,例如:
UPDATE theme SET message = REPLACE(message,'Tore Cube','star');
UPDATE theme SET message = REPLACE(message,'ToreCube','star');
什么是不考虑大小写且不考虑空格的UPDATE查询?
谢谢
答案 0 :(得分:0)
取决于数据库管理系统的类型,但是它应该是包裹在字符串周围的“ lower”和“ trim”功能的组合。
答案 1 :(得分:0)
使用正则表达式替换来进行不区分大小写的替换
regexp_replace(message, ‘torecube’, ’star’, ‘i’)
最后一个参数“ i”使其不区分大小写
我刚刚意识到OP没有提到PostgreSQL,所以我们不知道这是否是dbms。我会暂时保留我的答案,直到我们知道
答案 2 :(得分:0)
使用LOWER(),如果您使用的是SQLServer
,则会使列数据小写,然后在替换字符串中使用小写。
UPDATE theme SET [message] = REPLACE(LOWER([message]),'tore cube','star');
UPDATE theme SET [message] = REPLACE(LOWER([message]),'torecube','star');
答案 3 :(得分:0)
由于我们不确定使用哪种RDMS OP,我想提出一个可能在SQL Server环境中工作的解决方案:
UPDATE theme SET message =
REPLACE(REPLACE(message,'tore cube','star'),'torecube','star');
在SQL服务器中,标准设置不区分大小写。这使得处理我们想要替换的情况相对容易,请参见此处的一些演示: http://rextester.com/XGYX82444