MySQLのDISTINCTとCONCATで日本語文字列が変になる。
mysql(5.1)で、以下のSQLで末尾の「年」が表示されなくて困ってた。
何が悪いんだかわけわからん。
SELECT DISTINCT
CONCAT(
YEAR(date_begin),
'年') as y
FROM table
いろいろ複雑な事情があるのでしょう。DISTINCTしなかったり、YEARを使わなかったり、'年'を'NEN'に変えてみるとおかしくならない。ちなみにYEARじゃなくってMONTHでもダメ。場合によっては「SYNTAX ERROR」が出たり。
しばらく困っていたけど、解決法は単純。なんてことはない、明示的にCASTするだけ(↓)
SELECT DISTINCT
CONCAT(
CAST(YEAR(date_begin) AS CHAR),
'年') as y
FROM table
暗黙のキャストが行われるとうまく行かないってことかもしれんが、DISTINCTとの関係は不明なまま・・・。なにより、このバグっぽい挙動に困ってた人が、自分だけっぽくて孤独・・・
« HTML要素のイベントハンドラを自動登録 | トップページ | 家庭内グルメが二度おいしい »
「プログラミング」カテゴリの記事
- 自分で書いたコードが大好き(2020.09.20)
- NPMのヨロコビ(2020.05.14)
- VanilaJS は必須科目(2019.02.25)
- MZ-700フルJavaScriptエミュレータ v1.0.6 をリリース(2019.01.26)
- 戦々恐々GitHub vs BitBucket(2019.01.08)
コメント