不考虑大小写的UPDATE查询

时间:2018-07-20 07:24:42

标签: sql case

我需要更新数据库中的某些表,用一个单词替换另一个单词,但是问题是它不必区分大小写。我不想为大写和小写的每种组合进行咨询:

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查询?

谢谢

4 个答案:

答案 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