1

MySQLで次のエラーが発生します。運が悪かったので、convertも使ってみました。顧客は、顧客IDがBOB102、REB293、REC203のようなデータをフィルタリングできるようにしたいと考えています。200を超える顧客番号などを検索する必要があります。

SQL構文にエラーがあります。6行目の「INTEGER))> 0)'の近くで使用する正しい構文については、MySQLサーバーのバージョンに対応するマニュアルを確認してください。

SELECT `orders_jobs`.* 
FROM (`orders_jobs`) 
INNER JOIN `orders_users` ON `orders_jobs`.`customer` = `orders_users`.`id` 
WHERE `orders_jobs`.`active` = 1 
AND `orders_users`.`active` = 1 
AND ( CAST(orders_users.cust_number AS INTEGER)) > 0 )

現在、これらは必ずしも3文字列の長さであるとは限らず、4文字である可能性もあります。つまり、BKER2938

:Edgaが述べたように、整数の代わりにUNSIGNEDを使用する必要がありましたが、文字が原因ですべてを0に変換しているため、別の方法がある可能性がありますか?

データ例(フィールドcust_numberの場合): MTQ32499、BGM31620、RES42935、CAM31717、CRED31672(最後の文字は4文字であることに注意してください。3文字または4文字の長さになると思います)

cust_number>40000の顧客のみを返品する必要があります

4

1 に答える 1

1

あなたは使用する必要があります

CAST AS SIGNED

また

CAST AS UNSIGNED

詳細はこちら

- 編集

回避策として、最後の5文字が常に数字である場合はSUBSTRINGを使用できます

于 2012-12-27T16:50:51.780 に答える