SqlServer2005中查询用分隔符分割的内容中是否包含其中一个内容
查询 一个 是否 内容 包含 分割 其中 sqlserver2005
2023-06-13 09:14:31 时间
今天做项目遇到一个问题,
有产品分类A,B,C顶级分类,
期中A下面有a1,a2,a3子分类.
但是a1可能共同属于A和B,然后我的数据库是这样设计的
如果想要查询A的所有子类的话就要查询parent中包含1的,所以就萌生了这个办法.呵呵,
暂时没什么好办法,欢迎拍砖~~
另外,这个东西我想弄成bool返回值的,哪位兄弟会的希望帮忙解决一下....
SETANSI_NULLSON
GO
SETQUOTED_IDENTIFIERON
GO
/*
--=============================================
--Author:<饭饭>
--Createdate:<2011-10-19>
--Description:<查询分隔符分割的数据是否包含某项>
--=============================================
*/
ALTERFunction[dbo].[HasKey](@DataStrvarchar(100),@keyvarchar(8))
returnsint
as
begin
declare@return_strvarchar(50)
declare@isokbit
declare@posiint
set@isok=0
--set@DataStr="a,aaaa,aaaddd,ffass"
--set@key="aaaa"
set@DataStr=@DataStr+","
whilelen(@DataStr)>0and@isok=0
begin
set@posi=charindex(",",@DataStr)
set@return_str=replace(substring(@DataStr,1,charindex(",",@DataStr)),",","")
set@DataStr=substring(@DataStr,@posi+1,len(@DataStr))
if(@return_str=@key)
begin
set@isok=1
break
end
end
return@isok
end
GO
相关文章
- 2022-09-15:Range模块是跟踪数字范围的模块。 设计一个数据结构来跟踪表示为 半开区间 的范围并查询它们。 半开区间 [left, right) 表
- 2022-11-25:连续出现的数字。编写一个 SQL 查询,查找所有至少连续出现三次的数字。 答案是输出1,原因是1是唯一连续出现三次的数字。 DROP TA
- 2022-12-05:部门工资前三高的所有员工。编写一个SQL查询找出每个部门中收入前三高的员工 。 +------------+----------+----
- 2023-01-11:体育馆的人流量。编写一个 SQL 查询以找出每行的人数大于或等于 100 且 id 连续的三行或更多行记录。返回按 visit_date
- 2023-01-03:超过5名学生的课。编写一个SQL查询来报告 至少有5个学生 的所有班级,返回结果不限顺序。请问sql语句如
- mysql查询出来的某一列合并成一个字段详解数据库
- 最大值Oracle如何查询出去年最大值(oracle取去年)
- 提高效率:使用MSSQL查询快速获取数据(mssql查询数据)
- 如何查询Oracle数据库中的日期格式(查询oracle日期格式)
- 地址Linux下查询网关地址的方法(linux查询网关)
- Oracle SQL 的跟踪:优化查询,提升效率。(跟踪oraclesql)
- 使用MySQL查询语句快速给数据加上序号(mysql查询加序号)
- MySQL查询:统计数量(mysql查询数量)
- C语言编程中MySQL数据表的列查询(c mysql列的查询)
- MySQL的命令行工具及版本号查询(cmd mysql版本号)
- 解决Oracle数据表中主键重复问题(oracle主键重复查询)
- 查询Oracle中的序列一个指南(oracle中序列的查询)
- 借助Redis集群查询大数据的新方法(redis集群查数据方式)
- 一个可查询所有表的“通用”查询分页类
- 模糊查询的通用存储过程
- java操作mongodb基础(查询排序输出list)
- mysql中模糊查询的四种用法介绍
- 查询Sqlserver数据库死锁的一个存储过程分享
- 只有两个字段用一个sql语句查询出某个学生的姓名、成绩以及在表中的排名