sql - 使用空格 SQL 模式匹配查找单词
问题描述
我有一列包含数据Oil 76072 KTC Vegetable (Plastic Drum) 20ltr
我想检查是否Veg
可以作为数据中的一个单词使用。它可以是第一个,最后一个或介于两者之间的单词KTC
我在下面的查询返回数据Veg
和KTC
两者。
SELECT
Item,
Description,
SearchBox,
Ranking,
'Part Word Match' as SearchType
FROM
[HypEcommerce].[dbo].[ProductSearch]
WHERE (
[searchbox] like '%_' + trim(ltrim('veg')) +'_%'
OR [searchbox] like '%_'+ rtrim(ltrim('veg'))+ ''
OR [searchbox] like ''+ rtrim(ltrim('veg')) +'_%'
)
解决方案
我想检查 Veg 是否可以作为 dat 中的一个单词使用
CREATE TABLE T(
Value VARCHAR(45)
);
INSERT INTO T VALUES
('FooVeg Bar'), --not single word
('Foo Veg Bar'), --in the middle
('Veg Foo Bar'), --in the begining
('Bar Foo Veg'); --in the end
由于它可以在任何地方,因此您可以使用
SELECT *
FROM T
WHERE LOWER(Value) LIKE '% veg %'
OR
RIGHT(LOWER(Value), 4) = ' veg'
OR
LEFT(LOWER(Value), 4) = 'veg '
或者
SELECT *
FROM T
WHERE Value LIKE '% veg %'
OR
Value LIKE '% veg'
OR
Value LIKE 'veg %'
COLLATE Latin1_General_CI_AI
推荐阅读
- python - 类中的 Python 对象实例化(奇怪的行为)
- python - snakemake 使用不同的 shell/conda 环境?
- adobe - 未由 Acrobat Distiller 转换但由 GhostScript 转换的 PostScript 文件
- c# - 有没有一种简单的方法可以为我的 slack 机器人添加用户角色(我正在使用 Bot framework 4 c#)或者我应该自己做
- javascript - 在制作 QR 码之前,如何最好地压缩 JWT?
- .net - 如何在同一应用程序中同时为 Microsoft 帐户和 ADFS 使用身份验证处理程序?
- javascript - 在 nodejs 和 vuejs 的文件夹中获取我保存的图像名称时出错
- powershell - 当“用户已经是组的成员”时结束脚本
- python - 找到列中元组列表的第一个元素的第一个单词?
- javascript - 输入负数时显示错误消息