我是SQL新手并试图理解这个问题。我的书说我应该能够运行并获得以下结果:
SELECT * FROM Coffee WHERE ProdNum LIKE '2_-00_'
当我跑这个时,我没有得到任何结果。我期待像21-001或24-003这样的结果。我尝试过这些有效的替代方案:
SELECT * FROM Coffee WHERE ProdNum LIKE '2_-00%'
或者
SELECT * FROM Coffee WHERE ProdNum LIKE '2_-00_ '
ProdNum列初始化为10个字符,这就是最后一个工作的原因。从我读到的,我的印象是LIKE会忽略试验空格。这是对的吗?
答案 0 :(得分:1)
有两种常见类型的字符字段:
CHAR - 这将具有确定的长度(因此,对于10个字符的字段,它总是10个字符,如果字符串小于10,则在末尾有空格)。< / p>
VARCHAR - 此字段中的数据长度小于或等于10个字符。数据没有用空格填充。
让我们看看CHAR示例:
SELECT * FROM Coffee WHERE ProdNum LIKE '2_-00_'
数据24-001有4个训练空间,所以ProdNum LIKE&#39; 2_-00 _&#39;将为该记录返回false,因此不会返回记录。
现在,VARCHAR
SELECT * FROM Coffee WHERE ProdNum LIKE '2_-00_'
数据24-001不会有尾随空格。所以ProdNum LIKE&#39; 2_-00 _&#39;将为该记录返回TRUE,因此将返回记录。