で、先日、大文字で登録されたデータと小文字で登録されたデータの混在があり、困っている。と相談されました。
SQL上では'A'='a'がなりたちますが、プログラム側では'A'≠'a'なので、その辺で困っている模様でした。
とりあえず、
update T_TEST2 SET text1=upper(text1)
でできるんじゃない?と教えてあげたのですが、対象のレコードと個数が知りたい。とのことでした。
ということで、これで、いかが?と提示したところ、喜んでかえって行きました。
--だめな例
--select * from T_TEST2 where text1<>upper(text1)
--OKな例
select * from T_TEST2 where convert(varbinary,text1)<>convert(varbinary,upper(text1))
--select * from T_TEST2 where text1<>upper(text1)
--OKな例
select * from T_TEST2 where convert(varbinary,text1)<>convert(varbinary,upper(text1))
convertのvarbinaryは、指定の値を16進数で表現します。ソレをUPPERと組み合わせて差が出たものが対象。という事になります。
他のDBでも同じようなストアド・関数があれば実現できると思います。
0 件のコメント:
コメントを投稿