我的数据看起来像
ID LPNumber
1 30;#TEST123
2 302;#TEST1232
如何更新MyText以删除#之前的所有内容并包含#,所以我留下以下内容:
ID LPNumber
1 TEST123
2 TEST1232
我看过SQL Server Replace,但想不出一种可行的方法来检查“;”
答案 0 :(得分:6)
在MSDN REPLACE page上,左侧的菜单提供了完整的字符串函数列表。
UPDATE
MyTable
SET
LPNumber = SUBSTRING(LPNumber, CHARINDEX('#', LPNumber)+1, 8000);
如果列中没有#
,我会让你(从MSDN)找到所需的过滤器...
编辑:
为什么选择8000?
最长的非LOB字符串长度为8000,因此它是“直到字符串结尾”的简写。对于最大列,您也可以使用2147483647或使其保持一致。
此外,LEN可以帮助你。
SET ANSI_PADDING
默认为LEN
忽略尾随空格您需要使用DATALENGTH但是您需要知道数据类型,因为这会计算字节数,而不是字符数。例如,请参阅https://stackoverflow.com/a/2557843/27535
所以使用魔法数字可能是一个较小的邪恶......
答案 1 :(得分:3)
使用CHARINDEX(),LEN()和RIGHT()代替。
RIGHT(LPNumber, LEN(LPNumber) - CHARINDEX('#', LPNumber, 0))