Mariadb
SELECT with where between 未按預期工作
我正在嘗試使用此查詢在名稱 C89 到 C110 之間進行過濾。
SELECT id FROM servers WHERE server_name BETWEEN 'C89' AND 'C110'
但這不起作用。如果我將 c89 更改為 c90,它至少會選擇兩台伺服器。就像它只使用計算中的前 2 個數字一樣。
誰能幫我 ?我正在使用 mariadb 10.5 我正在尋找一種不需要在查詢中添加大量單詞的解決方案。為了可讀性盡可能精簡
一個簡短的答案:
... WHERE MID(server, 2) BETWEEN 89 AND 110
或者,如果您需要限制為“C”組伺服器:
... WHERE MID(server, 2) BETWEEN 89 AND 110 AND server LIKE "C%"
或者(為了避免“24H1”的麻煩),
... WHERE IF(server LIKE "C%", MID(server, 2) BETWEEN 89 AND 110, FALSE)
哦,現在我看到另一個“壞”的伺服器名稱(
INT1
)。面對現實,您需要將一些負擔放在 DBA 身上。他必須意識到,實際的方法是說... WHERE server BETWEEN 'C89' AND 'C99' OR server BETWEEN 'C100' AND 'C110'
也就是說,根據需要將過濾分解為盡可能多的範圍,以便字元串比較可以工作,而不是認為是數字的。