【发布时间】:2022-01-08 09:47:54
【问题描述】:
我有一个 VARCHAR 数据库字段,其数据以下列方式存储:
DatabaseField
1185731-2148838B
1185731-2148838S
1185731-2148838W
1185731-2148839B
我想将此字段分成两个单独的列 - 包含“-”两侧的数字。
要获取'-'之前和之后的值,我可以使用以下
SUBSTRING(DatabaseField,0,CHARINDEX('-',DatabaseField))
SUBSTRING(DatabaseField,CHARINDEX('-',DatabaseField)+1,LEN(DatabaseField))
这给了我
NewColumnA NewColumnB
1185731 2148838B
1185731 2148838S
1185731 2148838W
1185731 2148839B
我怎样才能从新列 B 中删除任何非数字字符 - 它可能不是列中的一个字母 - 它可能是 2 或 3,所以我不能只从新列中删除最后一个数字。
【问题讨论】:
-
如果数字字符的个数相同,则直接使用
LEFT即可。 -
不一定一样。
-
非数字字符是否总是在字符串的末尾?
-
是的,总是在最后,但它可以是一个或多个非数字字符。
标签: tsql sql-server-2016