アプリ版:「スタンプのみでお礼する」機能のリリースについて

ver. 4.1.12

lower関数を以下のように使用しても変換されません。

mysql> select lower(hex(encode(1000,"a")));
+------------------------------+
| lower(hex(encode(1000,"a"))) |
+------------------------------+
| C4DF4692 |
+------------------------------+
1 row in set (0.00 sec)


ただし、以下のように使うと変換できる。

mysql> select lower(b.a) from (select hex(encode(1000,"a")) as a) b;
+------------+
| lower(b.a) |
+------------+
| c4df4692 |
+------------+
1 row in set (0.00 sec)


いろいろ探してみたのですが原因がわかりません。

ご教授のほどよろしくお願いします。

A 回答 (1件)

ほんとかな?と思ったので、やってみると確かになりますね。


hex関数までは上手くいっているので、lower関数だと思うのですが、
こうすると上手くいきました。
select lower(cast(hex(encode(1000,"a")) as char));
lower関数は文字列を変換するので、castでcharに変換。
これで上手くいくので、HEXが文字列で返していないのかな?と思い。ドキュメント(参考URL)を確認すると、文字列表現を返す。。。。

文字列表現とは?文字列ではないのかな?
と疑問になりましたが、自分はここまでしか分りませんでした。。
HEXでの戻り型の違いによるものだと思うのですが・・。。
すみません。参考になればと思います。。

参考URL:http://dev.mysql.com/doc/refman/4.1/ja/string-fu …
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
そうなんですよ。HEXまではうまくいってるんですよね。
しかし、CASTを使うことは全く思いつきませんでした。
"文字列表現"って微妙な表現が気にはなりますが、
大変助かりました。ありがとうございました。

お礼日時:2006/03/24 17:03

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

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