ようこそ ゲスト さん、新規登録(無料)して気になる疑問を解決しませんか?

質問

QNo.3719105 2バイト文字をASCIIコードに変換
質問者:Gmoca SQL Server初心者です。
SQL Serverで2バイト文字をASCIIコードの値で返したいのですが、関数ASCII()を使用すると、1バイト目のASCIIコードの値しか返してくれません。

2バイト目の文字も返す方法をご教授ください。
言葉足らずでわかりにくいかと思いますが、よろしくお願い致します。
困り度:
  • すぐに回答を!
質問投稿日時:
08/01/27 20:00
最新から表示回答順に表示

回答

ANo.2 [イミディエイト]
? AscW("全")
20840

select unicode('全')
20840

と、ユニコードを求めたいということでしょうか?
回答者:Husky2007
種類:アドバイス
どんな人:一般人
自信:参考意見
回答日時:
08/02/04 13:19
この回答への補足この回答に補足をつける(質問者のみ)
この回答へのお礼コメントありがとうございます。

ユニコードではなくアスキーコードで返したいと思っています。

SELECT ASCII(SUBSTRING(CAST('TARGET' AS TEXT),1,2))
, ASCII(SUBSTRING(CAST('TARGET' AS TEXT),2,1))

こちらで解決したと思ったのですが、'あ'や'(1)'は1バイト目も2バイト目も返すことができたのですが、'(株)'や'No.'は1バイト目しか返しません。

理由を考えたのですが、どうしてもわかりませんでした。
TEXT型が特殊なのでしょうか。

わかりにくいかと思いますが、ご回答お待ちしております。

回答

ANo.1 ASCII関数は、複数の文字を指定した場合でも、
先頭文字の1文字しか変換の対象としないため
1バイト目のASCIIコードの値しか返らないのは正常の動作です。

2バイト目の文字も返す方法ですが、
見栄えは悪くなりますが以下の方法で取得することができます。
(参考程度に見てください(^^; きっと、もっと良い方法があると思います・・・。)

SELECT
CONVERT(VARCHAR, ASCII(SUBSTRING(TARGET, 1, 1))) + CONVERT(VARCHAR, ASCII(SUBSTRING(TARGET, 2, 1)
FROM
TARGET_TABLE

対象文字を切取り、ASCIIコードへ変換し、文字列へCONVERT後に、
2文字目も同じように変換し連結します。
ASCII関数は返値が数値であるため、CONVERTして文字列へ変換しています。

結果
対象データ:06 →ASCIIコード変換→4854
回答者:totoro1999
種類:アドバイス
どんな人:経験者
自信:参考意見
回答日時:
08/01/28 00:34
この回答への補足この回答に補足をつける(質問者のみ)
この回答へのお礼ご回答ありがとうございます。
参考になりました。
質問が悪く申し訳ありません。
全角の文字のアスキーコードを返したいのですが、他に方法はありませんでしょうか。
折角ご回答いただいたのに申し訳ありません。。
 
最新から表示回答順に表示