有谁知道我如何只更改数据库中 varchar 字段中的一个单词?它们的格式类似于“Cheese”、“cheese”、“CheesE”。我想将它们全部更改为 CHEESE,但我在这些字段中也有其他文本。我想知道他们是否是一种将这个词单挑出来并使它变得更高级的方法。
就像是
update table
set field = Upper(cheese)+rest of field
谢谢
有谁知道我如何只更改数据库中 varchar 字段中的一个单词?它们的格式类似于“Cheese”、“cheese”、“CheesE”。我想将它们全部更改为 CHEESE,但我在这些字段中也有其他文本。我想知道他们是否是一种将这个词单挑出来并使它变得更高级的方法。
就像是
update table
set field = Upper(cheese)+rest of field
谢谢
update table
set field = replace(field, 'cheese', 'CHEESE')
从您的评论中,我可以看到子字符串和单词之间的区别。可以使用 XML 作为代理格式进行这种“以词为中心”的转换。
尝试这个...
DECLARE @pattern nvarchar(max) = 'cheese'
SELECT
converted =
cast('<a><i>' + REPLACE(field, ' ', '</i><i>') + '</i></a>' as xml)
.query(
'for $x in /a/i return
if (not( ($x) is (/a/i[last()])[1] )) then
if (data($x) = sql:variable("@pattern")) then
concat(upper-case($x), "")
else
concat($x, "")
else
if (data($x) = sql:variable("@pattern")) then
string(upper-case($x))
else
string(data($x))')
.value('.', 'nvarchar(max)')
FROM table
我确信可以通过逐字符解析表达式来做到这一点,但我想用 XML 来尝试:)