可能是一个简单的但我在SQL中无法使用它。 (使用VBA很容易)。
鉴于xxx_123_abcd,我需要提取123部分。无论什么代码搜索_应始终从左侧起作用,因为有时候字符串可能是xxx_123_abcd_xxx。
提前感谢任何建议:)
答案 0 :(得分:1)
答案 1 :(得分:1)
使用CHARINDEX搜索下划线,以便能够使用SUBSTRING提取所需的字符串部分。这样的事情应该有效:
SELECT
SUBSTRING(MyColumn, CHARINDEX('_', MyColumn)+1,
CHARINDEX('_', MyColumn, CHARINDEX('_', MyColumn)+1)-CHARINDEX('_', MyColumn)-1)
FROM
MyTable
MyColumn = xxx_123_abcd_xxx
使用上述代码生成123
。
假设:您正在寻找的字符串由下划线的第一个和第二个出现。
答案 2 :(得分:1)
假设
然后这将起作用
SELECT SUBSTRING('xxx_123_abcd',CHARINDEX('_','xxx_123_abcd')+1,3)
答案 3 :(得分:1)
您也可以使用此
SELECT LEFT(Col1,PATINDEX('%[^0-9]%', Col1+'a')-1) from(
SELECT SUBSTRING(Col1, PATINDEX('%[0-9]%', Col1), LEN(Col1)) As Result From table
)x