文字列フィールドの最後の0
文字であるすべてのインスタンスを検索したい単一のテーブルがあります。2つの方法を使用してこれを試しましたが、それぞれ異なる結果が返されました。
この最初のクエリは実際に正しい答えを返すようでした
select * from icd
where CHARINDEX('0',icd,LEN(icd)) =LEN(icd)
これはすべての答えをキャッチするわけではありません
select * from icd
where PATINDEX('%0%',icd) = LEN(icd)
を使用して
select t.ICD as theCharIndex,x.ICD as thePatIndex from
(
select * from icd
where CHARINDEX('0',icd,LEN(icd)) =LEN(icd)
) t
left join
(
select * from icd
where PATINDEX('%0%',icd) = LEN(icd)
) x on x.ICD=t.ICD
where x.ICD is null
CHARINDEX
拾い上げたデータのセットを見つけましたが、そうでPATINDEX
はありませんでした。私もしました
update icd
set ICD=RTRIM(icd)
なぜPATINDEX
無差別にいくつかの行を除外するのでしょうか?