Разбор строк в SQL Server - PullRequest
       15

Разбор строк в SQL Server

0 голосов
/ 09 декабря 2011

У меня есть строковый столбец email_id; данные будут выглядеть так:

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

Я хочу получить список идентификаторов как целое число. Если в моей строке два числа, я хочу последнее. Мой результат должен выглядеть так:

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

Возможно ли это сделать в SQL Server?

Ответы [ 2 ]

5 голосов
/ 09 декабря 2011
SELECT
  CAST(RIGHT(email_id, LEN(email_id) - CHARINDEX(' ', email_id)) AS INT)
FROM
  yourTable

ЕСЛИ и ТОЛЬКО ЕСЛИ все ваши значения могут быть надежно преобразованы в INT, и в каждом случае может быть только один пробел.

РЕДАКТИРОВАТЬ Чтобы иметь дело со списком n значений

Это не красиво, но это позволяет избежать повторения и / или циклов.Если кто-то дает ответ без теста REVERSE (), чтобы проверить, быстрее ли он или нет.

SELECT
  CAST(
    REVERSE(
      LEFT(
        REVERSE(email_id),
        CHARINDEX(' ', REVERSE(email_id) + ' ') - 1
      )
    )
    AS INT
  )
FROM
  yourTable
0 голосов
/ 09 декабря 2011
SELECT CAST(replace(your_column ,' ','') as int)  FROM table
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...