簡體   English   中英

MySQL比較VARCHAR列

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

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