SQL Server中的字符串解析



我有字符串列email_id;数据看起来像这样:

email_id 
"1"
"6"
"3 4"
"8"
"0 3"
"0 5 7"

我想得到一个整数形式的id列表。如果字符串中有两个数字,我想要最后一个。我的结果应该是;

SELECT some_function (email_id ) FROM table
1
6
4
8
3
7

有可能在SQL Server中这样做吗?

SELECT
  CAST(RIGHT(email_id, LEN(email_id) - CHARINDEX(' ', email_id)) AS INT)
FROM
  yourTable

如果且仅当,所有的值都可以可靠地转换为INT类型,并且最多只有一个空格。


EDIT处理n值列表

这并不漂亮,但它避免了递归和/或循环。如果有人给出的答案没有REVERSE()测试,看看它是否比这更快。

SELECT
  CAST(
    REVERSE(
      LEFT(
        REVERSE(email_id),
        CHARINDEX(' ', REVERSE(email_id) + ' ') - 1
      )
    )
    AS INT
  )
FROM
  yourTable
SELECT CAST(replace(your_column ,' ','') as int)  FROM table

相关内容

  • 没有找到相关文章

最新更新