tsql - 在 T-SQL 中使用 % 通配符对结果进行子字符串化?
问题描述
我需要从选择结果中提取一个子字符串,该搜索是从同一字符串的一部分进行的!
我需要使用 % 通配符执行搜索。我的问题是,要返回整个列,我只需要将特定内容返回到与查询搜索匹配的列中
例如,假设我有下表:
ID Description
1 Yellow shirt 12345A
2 Red shirt 12345AB
3 Shirt blue 12345ABC
4 Shirt bluee 12345ABCD
3 Shorts small Product 12388X
4 Long shorts 12388XY
然后是以下查询:
DECLARE @mystring as varchar(10)
SELECT description from mytable where description like '%' + @mystring + '%'
将返回我:
Yellow shirt 12345A
Red shirt 12345AB
Shirt blue 12345ABC
Shirt bluee 12345ABCD
但是我希望它返回给我这个:
12345A
12345AB
12345ABC
12345ABCD
我应该如何过滤它才能达到这样的结果?
谢谢!
解决方案
如果我正确理解您的问题,您正在寻找的是 PATINDEX。
DROP TABLE IF EXISTS #Test;
CREATE TABLE #Test
(
TestID TINYINT PRIMARY KEY
,TestValue VARCHAR(100)
)
;
GO
DECLARE @myString VARCHAR(10) = '12345A';
INSERT INTO #Test
VALUES
(1, 'Yellow shirt 12345A')
,(2, 'Red shirt 12345AB')
,(3, 'Shirt blue 12345ABC')
,(4, 'Shirt bluee 12345ABCD')
,(5, 'Shorts small Product 12388X')
,(6, 'Long shorts 12388XY')
;
SELECT
*
,DerivedColumn = SUBSTRING(TestValue,PATINDEX(CONCAT('%',@myString,'%'),TestValue),LEN(TestValue))
FROM #Test
WHERE PATINDEX(CONCAT('%',@myString,'%'),TestValue) <> 0
;
推荐阅读
- slidetoggle - 通过 php+jQuery 隐藏/显示行
- javascript - Firebase:按字母顺序对最后一个子项中的嵌套字段进行排序
- tensorflow - 为什么输入大小 ot shape 无效?
- c++ - 为什么打开txt文件时出现错误?
- raspberry-pi - 向树莓派发送消息
- java - 如何使用 Jackson 序列化具有树结构的 JSON 文件
- python - 与 QSqlQueryModel 一起使用时如何更新 QListView?
- reactjs - 为什么我在 React 项目中得到 body 是 div 的子项的错误?
- reactjs - 无法将 var 发送到另一个组件中的道具
- spring - 如果@Transactional,Spring Boot 集成测试失败