T-SQL で文字列内の各文字の UNICODE を調べる方法

T-SQL で文字列内の各文字の UNICODE を調べる

入力ミスや文字化けなどで、文字列に目で見て判断できない文字が入り込んでしまって、それが何か特定したいような時があります。

ここでは、T-SQL で文字列内の各文字の UNICODE を調べて、その文字が何かを特定する方法をご紹介します。


文字列内の各文字の UNICODE を調べるには、次のように UNICODE と SUBSTRING を使うことで、確認できます。

DECLARE @Value NVARCHAR(50) = N'Test 123';

SELECT @Value,
       UNICODE(SUBSTRING(@Value, 1, 1)) AS Unicode1,
       UNICODE(SUBSTRING(@Value, 2, 1)) AS Unicode2,
       UNICODE(SUBSTRING(@Value, 3, 1)) AS Unicode3,
       UNICODE(SUBSTRING(@Value, 4, 1)) AS Unicode4,
       UNICODE(SUBSTRING(@Value, 5, 1)) AS Unicode5,
       UNICODE(SUBSTRING(@Value, 6, 1)) AS Unicode6,
       UNICODE(SUBSTRING(@Value, 7, 1)) AS Unicode7,
       UNICODE(SUBSTRING(@Value, 8, 1)) AS Unicode8;

[ 実行結果 ]
T-SQL で文字列内の各文字の UNICODE を調べる方法 1

SUBSTRING 関数を使って、一文字ずつ順番に取り出し、UNICODE 関数を使って、その文字の UNICODE を取得しています。

出てくるは数字は Decimal で、UNICODE の一覧表で調べると、それぞれ次のようになります。

Code Decimal Glyph Description
U+0054 84 T Latin Capital Letter T
U+0065 101 e Latin Small Letter e
U+0073 115 s Latin Small Letter s
U+0074 116 t Latin Small Letter t
U+3000 12288   Ideographic Space
U+0031 49 1 Digit One
U+0032 50 2 Digit Two
U+0033 51 3 Digit Three

これで、5 文字目が U+3000 の Ideographic Space(全角スペース)であることがわかりました。


T-SQL で全角スペースを半角スペースに置き換える

みつけた全角スペースを半角スペースに置き換えたい時は、次のようにできます。

DECLARE @Value NVARCHAR(50) = N'Test 123';

SELECT @Value,
       REPLACE(@Value, N' ', N' '),
       REPLACE(@Value, NCHAR(12288), N' ');

[ 実行結果 ]
T-SQL で文字列内の各文字の UNICODE を調べる方法 2

SELECT 文の 2 行目では、REPLACE 関数を使って、全角スペース N' ' を半角スペースに N' ' に置き換えています。

3 行目では、REPLACE 関数を使って、NCHAR(12288) を半角スペースに N' ' に置き換えています。

NCHAR 関数は整数で渡したコードの UNICODE の文字を返す関数です。

どちらを使っても、全角スペースを半角スペースに置き換えることができます。

半角スペースは U+0020 / Decimal では 32 なので、N' ' の代わりに NCHAR(32) として、REPLACE(@Value, NCHAR(12288), NCHAR(32)) でも大丈夫です。


以上、T-SQL で文字列内の各文字の UNICODE を調べる方法をご紹介しました。

© 2010-2025 SQL Server 入門