2017-06-19 19 views
-2

名前に2つのテーブルを追加するにはどうすればよいですか?たとえば :table1.stringColumn = test12_42とtable2.stringColumn = test12_42場合名前にアンダースコアがある場合、mysqlはテーブルの名前を結合できませんでした。

SELECT  * 
FROM  table1 
INNER JOIN table2 
ON   table1.stringColumn = table2.stringColumn 
WHERE  table1.stringColumn!= ''; 

これは動作しません。

どのように私はそれらに参加することができます、名前はumlauteとアンダースコアをaltought?

+0

結合の前にアンダースコアを置き換える必要がありますか?これはREPLACE()がなくても動作しますか? –

+0

アンダースコアをスペースで置き換えるのはなぜですか?あなたがしていることは何の意味もなしません。 –

+0

名前をバッククォートで囲みます。 – xQbert

答えて

0

スペースを削除しておけばそれだけです。

SELECT  * 
FROM  table1 
INNER JOIN table2 
ON   REPLACE(table1.name, '_', '') LIKE REPLACE(table2.name, '_', '') 
WHERE  table1.name != ''; 

あなたの理由が、あなたのテーブルの列またはそれに類似する理由の中に_の存在を気にしないことであれば。

+0

これはうまくいきません... – Alex

+0

私は自分のmysqlでそれをテストしました完全に、私は空間をスペースなしで置き換えることを提案しました@'alex –

0

いくつかの発言:

  • あなたは両方のフィールドで同じ操作を行う場合は、その結果には影響を与えないよう、それは無用です。 select文で置き換えます。 SELECTは(table1.name、 '_'、 '')をREPLACE

    INNERがtable1.name = table2.name ON table2の に参加し、table1.name TABLE1 FROM != ''

  • はそうではありません%記号を使用しない場合は、結合のように使用すると便利です。 '='記号を使用してください。

    'は、インナー(table1.name、 ''、 '')LIKE CONCAT( '%'、REPLACE(table2.name、 'を'、 '')REPLACE表2 ONをJOIN TABLE1 * FROM を選択します% ')AND table1.name!=' '

関連する問題