У меня есть столбец поля, который содержит такие значения, как
4
12,3
8,5,6,7
Я собираюсь написать оператор SELECT, результатом которого будет:
4
12
8
Как я могу это сделать?
да, я хочу первое значение для каждой строки
Попробуй это
Для SQL-сервера:
select if (charindex(',', numbers) = 0, numbers, LEFT(numbers, charindex(',', numbers) - 1))
from table;
Для MySQL:
select if (instr(numbers, ',') = 0, numbers, LEFT(numbers, instr(numbers, ',') - 1))
from table;
Попробуй это
Я надеюсь, что вы ищете такое решение.
DECLARE @table TABLE
(
ID INT IDENTITY(1,1),
Value NVARCHAR(MAX)
)
INSERT INTO @table VALUES('4'),('12,3'),('8,5,6,7')
select *,
IIF(CHARINDEX(',', [Value]) = 0, [Value],SUBSTRING([Value],1,(CHARINDEX(',',[Value])-1))) AS [OutPut]
from @table
Вывод
Попробуйте это для SQL-сервера
DECLARE @CSV_Split TABLE
(
Id INT IDENTITY(1,1),
CSVData NVARCHAR(MAX)
)
INSERT INTO @CSV_Split VALUES('4'),('12,3'),('8,5,6,7')
select *,LEFT(CSVData, CHARINDEX(',', CSVData + ',') - 1)
from @CSV_Split
Вывод примерно такой:
Вы хотели первое значение для каждой строки?