Получить первое или второе значение из значения, разделенного запятыми в SQL - PullRequest
1 голос
/ 23 декабря 2009

У меня есть столбец, в котором хранятся данные типа (42,12). Теперь я хочу получить 42 или 12 (два разных запроса выбора). Я искал и нашел несколько похожих, но гораздо более сложных сценариев. Есть ли простой способ сделать это? Я использую MSSQL Server 2005.

Учитывая, что всегда будет только два значения, и они будут целыми числами

Ответы [ 2 ]

8 голосов
/ 23 декабря 2009

Я вам здесь помогу, сообщив, что причиной возникновения этой проблемы является то, что база данных (которую вы не можете контролировать) нарушает первую нормальную форму. Среди прочего, первая нормальная форма говорит, что каждый столбец должен содержать одно значение, а не несколько значений. Это плохой дизайн.

Теперь, сказав это, первое решение, которое приходит мне в голову, это написать UDF, который анализирует значение в этом столбце на основе разделителя и возвращает либо первое, либо второе значение.

Randy

6 голосов
/ 23 декабря 2009

Вы можете попробовать что-то вроде этого

DECLARE @Table TABLE(
        Val VARCHAR(50)
)

INSERT INTO @Table (Val) SELECT '42,12'

SELECT  *,
        CAST(LEFT(Val,CHARINDEX(',',Val)-1) AS INT) FirstValue,
        CAST(RIGHT(Val,LEN(Val) - CHARINDEX(',',Val)) AS INT) SecondValue
FROM    @Table
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...