- 締切済み
2バイト文字をASCIIコードに変換
SQL Server初心者です。 SQL Serverで2バイト文字をASCIIコードの値で返したいのですが、関数ASCII()を使用すると、1バイト目のASCIIコードの値しか返してくれません。 2バイト目の文字も返す方法をご教授ください。 言葉足らずでわかりにくいかと思いますが、よろしくお願い致します。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- nora1962
- ベストアンサー率60% (431/717)
UNICODEでもSHIFT-JISでもプログラム側で一旦受けて、 Byte配列に格納してから評価するのはどうですか。 Sub bbb() Dim strTest As String Dim bytArray() As Byte Dim intcount As Integer strTest = StrConv("全(株)", vbFromUnicode) bytArray = strTest For intcount = 0 To UBound(bytArray) Debug.Print bytArray(intcount) Next End Sub
[イミディエイト] ? AscW("全") 20840 select unicode('全') 20840 と、ユニコードを求めたいということでしょうか?
- totoro1999
- ベストアンサー率100% (2/2)
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
お礼
ご回答ありがとうございます。 参考になりました。 質問が悪く申し訳ありません。 全角の文字のアスキーコードを返したいのですが、他に方法はありませんでしょうか。 折角ご回答いただいたのに申し訳ありません。。
お礼
コメントありがとうございます。 ユニコードではなくアスキーコードで返したいと思っています。 SELECT ASCII(SUBSTRING(CAST('TARGET' AS TEXT),1,2)) , ASCII(SUBSTRING(CAST('TARGET' AS TEXT),2,1)) こちらで解決したと思ったのですが、'あ'や'(1)'は1バイト目も2バイト目も返すことができたのですが、'(株)'や'No.'は1バイト目しか返しません。 理由を考えたのですが、どうしてもわかりませんでした。 TEXT型が特殊なのでしょうか。 わかりにくいかと思いますが、ご回答お待ちしております。