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 会忽略试用空格。这是正确的吗?
有两种常见的字符字段类型:
CHAR - 这将精确定义长度(因此在 10 个字符字段的情况下,它将始终为 10 个字符,如果字符串小于 10,则末尾有空格) .
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.
我是 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 会忽略试用空格。这是正确的吗?
有两种常见的字符字段类型:
CHAR - 这将精确定义长度(因此在 10 个字符字段的情况下,它将始终为 10 个字符,如果字符串小于 10,则末尾有空格) .
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.