Я хотел бы этого поля данных:как отделить запятой в SQL
MaritalStatus=M;Youngest=[-0.999,0.999];
Сплит:
field name = Maritalstatus , data is M
Field name = Youngest , Data is [-0.999,0.999];
Как написать SQL?
Я хотел бы этого поля данных:как отделить запятой в SQL
MaritalStatus=M;Youngest=[-0.999,0.999];
Сплит:
field name = Maritalstatus , data is M
Field name = Youngest , Data is [-0.999,0.999];
Как написать SQL?
Это немного веселья с SUBSTRING
и CHARINDEX
, но это выполнимо только с 2 частями информации для извлечения:
select SUBSTRING(@string,
CHARINDEX('=', @string) + 1,
CHARINDEX(';', @string) - CHARINDEX('=', @string) - 1) as Maritalstatus,
SUBSTRING(@string,
CHARINDEX('=', @string, CHARINDEX(';', @string)) + 1,
LEN(@string) - CHARINDEX('=', @string, CHARINDEX(';', @string))) as Youngest
Спасибо. Но я точно не знаю имя поля данных и количество данных. как сделать . Пожалуйста, помогите мне. –
Вам не нужны имена, в приведенном выше коде используются только '=' и ';', чтобы получить границу данных. – Szymon
Вы можете использовать следующий код в СП или создать определенную пользователем функцию, чтобы достичь своей цели
declare @commaSeperatedVal varchar(100)
set @commaSeperatedVal='MaritalStatus=M;Youngest=[-0.999,0.999];'
DECLARE @x XML
SELECT @x = CAST('<A>'+ REPLACE(@commaSeperatedVal,';','</A><A>')+ '</A>' AS XML)
select 'field name ='+ replace(Tval,'=' , ',data is ') from
(
SELECT t.value('.', 'varchar(100)') as Tval
FROM @x.nodes('A') AS x(t)
) tbl
where tbl.Tval<>''
Извините. Я имею в виду, когда я извлекаю данные из таблицы. Я получу эти данные: MatStatus = M; Youngest = [- 0.999,0.999]; Затем я хотел бы выделить данные и поле. «Братство» будет полем. M будут данными. Когда я excute SQL, строка ключевого значения. Пожалуйста, помогите мне дать простой код. –
Пожалуйста, ясно укажите, какой выход вы хотите? – himadri
Я хотел бы получить это так: Я получу пример данных 'MatStatus = M; Youngest = [- 0.999,1.00];' из другой таблицы. Я бы хотел, чтобы я зарегистрировал это поле данных. Set filename = RelationshipStatus set value = M Если я вижу; Я хотел бы сделать цикл снова. В этом втором цикле я хотел бы назначить подобное set filed name = Youngest set value = [-0.999,1.00] Можете ли вы мне помочь. дайте мне образец кода. Заранее спасибо. –
Какую версию SQL Server вы используете? – Yuck
Вы хотите, чтобы общая переменная varchar была разделена на строки пар ключ/значение. Это? – Nizam
Да. SQLServer 2008. Я буду извлекать эти данные: MatStatus = M; Youngest = [- 0.999,0.999]; из другой таблицы. это поле данных не является фиксированным. могут быть изменены по-разному. Например, я могу получить Eldest = [0.99] только из этой таблицы. Я хотел бы разделить ряд пар ключ/значение в соответствии с изменением данных. помогите мне –