[英]MySQL Compare VARCHAR Columns
我有一列名為D1_VAL
此列中的行具有如下數據:
C:10
R:200
E:3
N:77
我正在嘗試使用邏輯運算符對這些值進行搜索。 我已經試過了:
SELECT * FROM d1 WHERE CAST(`D1_VAL` AS UNSIGNED) > 5
它不返回任何行。 我也嘗試過:
SELECT * FROM d1 WHERE (0 + `D1_VAL`) > 5
我該如何正確處理?
這個查詢會做,
SELECT * FROM d1 WHERE CAST(SUBSTRING(`D1_VAL`, 3) AS UNSIGNED) > 5
但是最好將C:10
類的值標准化為兩個單獨的列。
create table d1(
letter char(1),
number int,
// ... other columns
)
您要進行的比較是什么?
如果將數字(從冒號到冒號)與5進行比較,請嘗試以下操作:
CAST(SUBSTRING(`D1_VAL`, INSTR(`D1_VAL`, `:`)) AS UNSIGNED) > 5
有關字符串函數的更多信息,請參見此處 。
另外,我建議您考慮一下數據庫的設計-即,將該列的內容存儲在兩列中(例如,一個char和一個整數)會更好嗎? 這樣會更有效率-需要更少的磁盤空間並允許更快的查詢。 如果您有很多行,那么執行各種字符串函數,強制轉換等操作可能會使查詢運行得很慢。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.