質問 |
||
| 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 |
|
| |
| この回答への補足 | この回答に補足をつける(質問者のみ) |
| この回答へのお礼 | ご回答ありがとうございます。 参考になりました。 質問が悪く申し訳ありません。 全角の文字のアスキーコードを返したいのですが、他に方法はありませんでしょうか。 折角ご回答いただいたのに申し訳ありません。。 |