SQL LIKE运算符和尾随空格

时间:2018-01-21 00:34:12

标签: sql jdbc javadb

我是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会忽略试验空格。这是对的吗?

1 个答案:

答案 0 :(得分:1)

有两种常见类型的字符字段:

  1. CHAR - 这将具有确定的长度(因此,对于10个字符的字段,它总是10个字符,如果字符串小于10,则在末尾有空格)。< / p>

  2. VARCHAR - 此字段中的数据长度小于或等于10个字符。数据没有用空格填充。

  3. 让我们看看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,因此将返回记录。