为什么在尝试删除引号和尾随引号时添加locate('“',ProductName)> 0?

时间:2017-11-04 14:47:08

标签: mysql

-- Remove leading and trailing double quotes from productname
SELECT ProductName, TRIM(BOTH '"' FROM ProductName) AS ProductName_trim
FROM superstore.product
WHERE LOCATE('"', ProductName) > 0
ORDER BY LENGTH(ProductName);

以下是结果记录之一:

"Elite 5"" Scissors", Elite 5"" Scissors

第一个“是否位于原点ProductName中的位置0?

1 个答案:

答案 0 :(得分:0)

显然,查询的目的是仅显示trim()可能正在执行某些操作的结果。

在SQL中,字符串中的位置计数(通常)从1开始,而不是0. 0用于表示没有匹配。

我建议将其写成:

SELECT p.ProductName, TRIM(BOTH '"' FROM p.ProductName) AS ProductName_trim
FROM superstore.product p
WHERE p.ProductName LIKE '%"%'
ORDER BY LENGTH(p.ProductName);

我认为使用LIKE的目的更明确。