在两个字符串值之间查找字符串

时间:2014-06-17 08:03:42

标签: sql sql-server

可能是一个简单的但我在SQL中无法使用它。 (使用VBA很容易)。

鉴于xxx_123_abcd,我需要提取123部分。无论什么代码搜索_应始终从左侧起作用,因为有时候字符串可能是xxx_123_abcd_xxx。

提前感谢任何建议:)

4 个答案:

答案 0 :(得分:1)

使用自定义的分割功能,例如描述的here

如果xxx_123部分的长度始终相同,您也可以使用

SUBSTRING('xxx_123_abcd',5,7)

答案 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)

假设

  1. 您要搜索的数字字符串总是三位数
  2. 始终以' _'
  3. 开头
  4. 紧接着第一次出现' _'在字符串
  5. 然后这将起作用

    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