1

数日前、私の問題について質問したところ、 CONCAT_WS関数を使用するように勧められました。ローカルの mysql データベースで CONCAT_WS を使用していますが、完全に機能しています。しかし、サーバー(ホストされているアプリケーション)では機能せず、次のエラーが生成されます。

FUNCTION test.CONCAT_WS が存在しません

エラー文字列には、サーバー上の私testのデータベース名があります。

私のクエリは次のようなものです:

SELECT * FROM patient WHERE CONCAT_WS (',', LastName,FirstName,BirthDate ) NOT IN ('Abdul,Quddus,2000-09-30','Wasim,Akram,1993-09-12');

誰かが私に問題を教えてくれるか、上記のリンクされた質問で尋ねられた別の解決策を提案してもらえますか?

ありがとう

4

1 に答える 1

4

これを修正する最も簡単な方法は、関数名と括弧の間の空白を削除することCONCAT_WS(...)ですCONCAT_WS (...)

MySQLマニュアルから:

デフォルトでは、関数名とそれに続く括弧の間に空白があってはなりません。これは、MySQL パーサーが関数呼び出しと、たまたま関数と同じ名前を持つテーブルまたは列への参照を区別するのに役立ちます。

...

--sql-mode=IGNORE_SPACE オプションで開始することにより、関数名の後にスペースを受け入れるように MySQL サーバーに指示できます。

また、この動作は MySQL のバージョンによって異なります。これが、あるサーバーでは機能し、別のサーバーでは機能しない理由です。「Function Name Parsing and Resolution」マニュアル ページからの引用:

IGNORE_SPACE の影響を受ける関数名の数は、MySQL 5.1.13 で約 200 から約 30 に大幅に減少しました。

于 2010-09-24T13:14:54.953 に答える