dポイントプレゼントキャンペーン実施中!

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

2バイト目の文字も返す方法をご教授ください。
言葉足らずでわかりにくいかと思いますが、よろしくお願い致します。

A 回答 (3件)

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
    • good
    • 0

[イミディエイト]


? AscW("全")
20840

select unicode('全')
20840

と、ユニコードを求めたいということでしょうか?
    • good
    • 0
この回答へのお礼

コメントありがとうございます。

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

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

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

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

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

お礼日時:2008/02/04 21:51

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
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
参考になりました。
質問が悪く申し訳ありません。
全角の文字のアスキーコードを返したいのですが、他に方法はありませんでしょうか。
折角ご回答いただいたのに申し訳ありません。。

お礼日時:2008/01/28 21:55

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す