簡體   English   中英

結合字母數字時如何選擇真實值?

[英]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.

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