Sql 使用坏数据挖掘列
我的数据看起来像Sql 使用坏数据挖掘列,sql,sql-server,trim,Sql,Sql Server,Trim,我的数据看起来像 ID LPNumber 1 30;#TEST123 2 302;#TEST1232 如何更新MyText以删除#之前的所有内容,包括#,因此我只剩下以下内容: ID LPNumber 1 TEST123 2 TEST1232 我已经查看了SQL Server Replace,但是想不出一种可行的方法来检查“;”在左侧的菜单中,提供了可用字符串函数的完整列表 UPDATE MyTable SET LPNumber =
ID LPNumber
1 30;#TEST123
2 302;#TEST1232
如何更新MyText以删除#之前的所有内容,包括#,因此我只剩下以下内容:
ID LPNumber
1 TEST123
2 TEST1232
我已经查看了SQL Server Replace,但是想不出一种可行的方法来检查“;”在左侧的菜单中,提供了可用字符串函数的完整列表
UPDATE
MyTable
SET
LPNumber = SUBSTRING(LPNumber, CHARINDEX('#', LPNumber)+1, 8000);
我将让您(从MSDN)计算出所需的过滤器,以防列中没有
编辑:
为什么是8000
最长的非LOB字符串长度为8000,因此它是“直到字符串结束”的缩写。您也可以将2147483647用于max列或使其一致
还有,LEN可以告诉你
- 默认情况下处于启用状态
忽略尾随空格LEN
+1:以22秒的优势被击败。我需要更快的手指!:)[虽然,这对VARCHAR(max)适用吗?]@aF.-ooh,我不认为改变别人的答案是好的,除非是因为拼写错误等。8000的原因是它适用于除VARCHAR(max)afaik之外的所有东西,而且对我来说似乎是故意的。如果你不同意这一点,一定要发表评论,甚至你自己的答案,但编辑答案?Ooooooh…@aF.
CHAR\u LENGTH
SQL Server函数吗?我找不到它。@Dems:如果SET语句中缺少wantLPNumber=则更改为210000000。否则的话,这是一种享受。谢谢你,你真的很有天赋。如果存储了尾随空格(SET ANSI PADDING ON
是默认设置),这会让你感到困惑,因为LEN会先修剪这些空格。有一种方法是我明显的疯狂…@gbn-我从未怀疑过你的疯狂:)@JamesKhan-在使用这个答案之前注意gbn的评论。
RIGHT(LPNumber, LEN(LPNumber) - CHARINDEX('#', LPNumber, 0))