SQL - 修剪并在转换和替换已使用时仅保留字符串中的最后一个单词



这是我的输出:=//Resources/Users/233d4f24-010a-4b22-b7d6-384a101b2f3c;John Smith.

如何修剪它,使其仅显示约翰·史密斯。 非常感谢。

这是我的代码。

Select
convert(xml,replace(convert(nvarchar(max), jq.Arguments), 'UTF-8', 'UTF-16')).value('arguments[1]/services[1]/instance[1]/data[1]/owner1[1]','varchar(100)') as 'Owner2',

如果分号永远是你的分隔符,并且只有一个分号,你可以使用 Char Index 找到分号在字符串中的位置,使用长度并从字符串的整个长度中减去你想要多少个字符,然后用右边修剪抓住它后面的所有字符:

right(YourColumn,len(YourColumn)-CHARINDEX('-',YourColumn))

如果上面的代码是你用来获取列的代码,请将上述语句中的所有 YourColumn 实例替换为你的代码:

right(convert(xml,replace(convert(nvarchar(max), jq.Arguments), 'UTF-8', 'UTF-16')).value('arguments[1]/services[1]/instance[1]/data[1]/owner1[1]','varchar(100)'),
len(convert(xml,replace(convert(nvarchar(max), jq.Arguments), 'UTF-8', 'UTF-16')).value('arguments[1]/services[1]/instance[1]/data[1]/owner1[1]','varchar(100)'))
-CHARINDEX('-',convert(xml,replace(convert(nvarchar(max), jq.Arguments), 'UTF-8', 'UTF-16')).value('arguments[1]/services[1]/instance[1]/data[1]/owner1[1]','varchar(100)'))) as Owner3,

你的代码看起来像SQL Server。 如果你想去掉分号之前的所有内容:

select stuff(jq.Arguments, 1, charindex(';', jq.Arguments) + 1, '')

最新更新