簡體   English   中英

Mysql 查詢返回錯誤結果

[英]Mysql query is returning false results

我有一個產品表,其中的 product_id 字段是自動 ID 和 integer。 當我搜索時:

SELECT * FROM `products` WHERE product_id = '73N716507Y5928128'

它實際上返回 product_id 為 73 的行。我可能是編程新手,但我知道 73.= 73N716507Y5928128。

我能做些什么來解決這個問題? 順便說一句,這個查詢的原因是我在多個表和多個字段中搜索一個搜索詞,並使用邏輯來確定用戶正在搜索什么......

任何幫助將不勝感激。

在 mysql 中,當您比較(=、<、>、<=、>=、<=>)一個數字字段和一個字符字段時,字符字段首先轉換為數字,忽略任何尾隨的非數字字符。

大概您希望product_id=部分保持不變以利用索引。 您可以添加一個附加條件來測試輸入是否實際上是一個數字:

SELECT * FROM `products`
WHERE product_id = '73N716507Y5928128'
AND CONCAT(0+'73N716507Y5928128')='73N716507Y5928128';

您的業務邏輯應確保在where clause中僅傳遞整數。 但是,您也可以嘗試以下方法,它會解決問題。 但是如果products表有數百萬條記錄,由於表全掃描,這將不是一個好主意。 但是,如果表中有 10K 或更少的產品,那么全掃描將根本沒有意義。

SELECT * FROM `products` WHERE binary(product_id) = '73N716507Y5928128'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM