は何でしょうか?
DECLARE @dummy TABLE(A INT,B VARCHAR(100));
INSERT INTO @dummy VALUES
(1,'AMC I XYZAQS')
,(2,'ABC IV 2 XYZQWS')
,(3,'ANR XVI ANCVP')
,(4,'SWD POL 2#');
WITH Casted AS
(
SELECT A
,B
,CAST('<x>' + REPLACE((SELECT B AS [*] FOR XML PATH('')),' ','</x><x>') + '</x>' AS XML) InParts
FROM @dummy
)
,Splitted AS
(
SELECT A
,B
,x.value('.','nvarchar(max)') AS part
FROM Casted
OUTER APPLY InParts.nodes('x') AS Parts(x)
)
SELECT * FROM Splitted
WHERE UPPER(part) NOT LIKE '%[0-9ABEFGHJKNOPQRSTUWYZ]%'
結果
A B part
1 AMC I XYZAQS I
2 ABC IV 2 XYZQWS IV
3 ANR XVI ANCVP XVI
これはローマ数字のいずれかのルールをチェックしません。特殊文字の存在を確認するだけです
文字がローマ数字であるかどうかをどのように知っていますか?あなたのサンプルの4番目のレコードはローマ数字でもある 'L'を持っています。なぜそれを選択したくないのですか? – HoneyBadger
周辺言語は何ですか? 'LIV'はスウェーデン語のローマ数字か、単に「人生」という言葉ですか? –
私はそれが他の言語で本当の意味を持っているという事実にかかわらず、ローマ数字であると考えます。 – SChowdhury