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