文字列を特殊記号に基づいて複数の値に分割したい。例えば、ここに私はそれになりたい文字列SQL XML解析で文字 'TH'の文字列を分割する
JdwnrhþTHIMPHUþOTHþþ10/1991þ02/ 02 /2011þBHUTAN
です:
JdwnrhティンプーOTH 1991分の10 2011年2月2日ブータンは
私は次のSQLを使用しています:
DECLARE @delimiter VARCHAR(50)
SET @delimiter='þ'
;WITH CTE AS
(
SELECT
CAST('<M>' + REPLACE(REPLACE(CAST(DATA as nvarchar(MAX)), @delimiter , '</M><M>'), '&', '&') + '</M>' AS XML)
AS BDWCREGPREVADDR_XML
FROM [JACS_RAVEN_DATA_OLD].dbo.BDWCREGPREVADDR
)
SELECT
BDWCREGPREVADDR_XML.value('/M[1]', 'varchar(50)') As streetNo,
BDWCREGPREVADDR_XML.value('/M[2]', 'varchar(50)') As suburb,
BDWCREGPREVADDR_XML.value('/M[3]', 'varchar(3)') As stateCode,
BDWCREGPREVADDR_XML.value('/M[4]', 'varchar(10)') As postalCode,
BDWCREGPREVADDR_XML.value('/M[7]', 'varchar(50)') As country,
BDWCREGPREVADDR_XML.value('/M[5]', 'varchar(50)') As dateFrom,
BDWCREGPREVADDR_XML.value('/M[6]', 'varchar(50)') As dateTo
FROM CTE
GO
クエリは、例として提供された以外のすべての文字列でうまく機能します。文字列以上の場合、クエリは次の値を返します。
'Jdwnrh' '' 'IMPHU' 'O' ' ' '02/02/2011' '10/1991' ' ブータン'
コードは新しい属性として文字 'TH'をとり、その文字列を分割しているようです。誰もこの問題を解決する方法を知っていますか?
これはSQL Serverのように見えるので、SQL Serverタグを追加しました。 –
これは、すべての文字列に 'nvarchar()'を使用すると起こりますか? –
「þ」は「th」と同等と見なされる可能性があります(https://en.wikipedia.org/wiki/Thorn_ \(letter \)) – Blorgbeard