SQL LIKE 运算符和尾随空格

SQL LIKE operator and trailing spaces

我是 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. CHAR - 这将精确定义长度(因此在 10 个字符字段的情况下,它将始终为 10 个字符,如果字符串小于 10,则末尾有空格) .

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

让我们以 CHAR 为例:

SELECT * FROM Coffee WHERE ProdNum LIKE '2_-00_'

数据 24-001 有 4 个训练空间,因此 ProdNum LIKE '2_-00_' 对于该记录将 return 为假,因此该记录不会被 return 编辑。

现在,VARCHAR

SELECT * FROM Coffee WHERE ProdNum LIKE '2_-00_'

数据 24-001 将没有尾随空格。所以 ProdNum LIKE '2_-00_' 将 return TRUE 对于该记录,因此记录将 returned.