修剪包含错误数据的列

Jam*_*han 2 sql sql-server trim

我的数据看起来像

ID    LPNumber 
1     30;#TEST123
2     302;#TEST1232
Run Code Online (Sandbox Code Playgroud)

如何更新MyText以删除#之前的所有内容并包含#,所以我留下以下内容:

ID    LPNumber 
1     TEST123
2     TEST1232
Run Code Online (Sandbox Code Playgroud)

我看过SQL Server Replace,但想不出一种检查";"的可行方法.

gbn*_*gbn 6

MSDN REPLACE页面上,左侧的菜单提供了可用字符串函数的完整列表.

UPDATE
   MyTable
SET
   LPNumber = SUBSTRING(LPNumber, CHARINDEX('#', LPNumber)+1, 8000);
Run Code Online (Sandbox Code Playgroud)

我会让你解决(从MSDN)所需的过滤器,如果#列中没有...

编辑:

为什么8000?

最长的非LOB字符串长度是8000,因此它是"直到字符串结尾"的简写.对于最大列,您也可以使用2147483647或使其保持一致.

此外,LEN可以帮助你.

您需要使用DATALENGTH但是您需要知道数据类型,因为这会计算字节数,而不是字符数.例如,请参阅/sf/answers/179049041/

所以使用一个神奇的数字可能是一个较小的邪恶......

  • @aF. - 哦,我不认为改变一些人的好处是不错的,因为它是Typos等等.8000的原因是它适用于VARCHAR(最大)afaik以外的所有东西,并且似乎是故意对我.如果您不同意,请做出评论甚至是您自己的答案,但要编辑答案?噢... ... (3认同)
  • LPNumber =从SET语句中丢失.否则就是一种享受.谢谢你,你真的很有天赋. (2认同)