• ベストアンサー

LIKEの右側にカラムを指定できますか?

SELECTした値を先頭一致するか比較したいのですが、 LIKE の右辺に文字列でなく、カラムを指定する事は無理でしょうか? LIKE '%'+カラム名 だとエラーになってしまいました・・

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

>そうです。先頭一致です。 「列名 LIKE '%abc'」という指定は、「後方一致」と呼びます。「先頭一致」という表現では、「列名 LIKE 'abc%'」という前方一致と誤解されます。 >カラム名A LIKE '%'+カラム名B 文字連結を「+」で行うというデタラメな構文は、どこで覚えたのでしょうか? 「+」で文字連結というのは、SQL Serverなどの独自仕様です。 標準SQLや主要なRDBMSでは、「||」を使います。MySQLもANSI構文モードでは同様ですが、MySQL構文だと、concat関数を使う必要があります。 「カラム名A LIKE CONCAT('%',カラム名B)」といった指定になります。ただし、このような指定をすると、インデクスを有効利用できず、母体件数に比例して性能劣化します。

php4
質問者

お礼

大変、明快なご回答ありがとうございます。助かりました。 CONCAT関数はたまに使った事があったのですが、盲点でした。 又、今後、困ったらSQL標準も調べてみますね。

その他の回答 (1)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

先頭一致させたいのですよね? カラム名 LIKE '一致したい文字列%' ってことじゃないのですか?

php4
質問者

補足

そうです。先頭一致です。ただ、 カラム名A LIKE '%'+カラム名B としたいのです。やはり無理でしょうか? 説明が下手ですみません。

関連するQ&A