[英]How to select true value when combining alphanumeric?
mysql: customer_number = int
(無法更改)
$query = "SELECT * FROM clients WHERE customer_number= '123F'"
結果應該為空。
查詢的結果是不正確的,因為MySQL忽略了構成整數數據類型值的任何字母字符,例如'F'
您可以檢查所提供的值是否嚴格為整數。
$query = "SELECT * FROM clients WHERE customer_number= '123F'
AND '123F' REGEXP '^-?[0-9]+$'";
AND
必須同時滿足兩個條件。
因此,即使MySQL忽略了123F
F
並將其視為123
,第二個條件也將返回FALSE
並且123F
將使嚴格整數條件的正則表達式失敗。
結果如下:
123
>通過
123F
>失敗
您可以將customer_number
為字符串:
SELECT *
FROM clients
WHERE CAST(customer_number as CHAR(50)) = '123F'
上面的查詢當然不是SARGable的。 考慮在構造查詢之前在客戶端處理比較參數。
或首先檢查字符串中的整數是否等於字符串(將字符串更改為您的字段名):
SELECT * FROM clients
WHERE
'123F'+0 = '123F'
AND
customer_number= '123F';
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.