我最近收到一个请求,要求从客户数据库的来宾姓氏字段中删除一些座席名称。
例如。 'John Smith -Wotif'
在使用以下UPDATE语句进行测试时,会擦除整个字段,而不仅仅是特定的字符串。
UPDATE GUEST
SET SURNAME = REPLACE(' -Wotif',' -Wotif','')
WHERE SURNAME LIKE '% -Wotif'
此后,我发现仅将列名用作匹配字符串将允许完整语句工作(即使已在SET部分中指定),但我无法弄清楚原始语句的逻辑位置有效地说“彻底清除了这些字段”。
除非另有说明,否则''
替换项仅适用于子字符串中包含的值,而不管字符串和子字符串是否匹配?
答案 0 :(得分:1)
REPLACE
函数中的第一个参数是您要搜索的完整字符串。因此,您应该引用SURNAME
字段,而不是指定字符串的一部分。
REPLACE(SURNAME,' -Wotif','')
答案 1 :(得分:0)
您更新的SQL命令应如下所示-
UPDATE GUEST
SET SURNAME = REPLACE(SURNAME, 'FindValue' , 'ReplaceWithValue')
WHERE SURNAME LIKE '% -Wotif'
如果要查找并替换'-Wotif'为空白,则更新命令应如下所示-
UPDATE GUEST
SET SURNAME = REPLACE(SURNAME, '-Wotif' , '')
WHERE SURNAME LIKE '% -Wotif'