首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

请问SQL查询json字符串

2013-09-28 
请教SQL查询json字符串FIDJSON1[{city: 北京, name: 张三, tel: 123}]怎么查询 如何写一个数

请教SQL查询json字符串

FID     JSON
1    [{"city": "北京", "name": "张三", "tel": "123"}]


怎么查询 


如何写一个数据表函数三个参数 func(key,value,oper)


我调用这个函数传入 func('name','张三','like') 就能得到该条记录。。

SQL JSON
[解决办法]

if OBJECT_ID('tablename', 'u') is not null   drop table #temp;
CREATE TABLE tablename(fid int, json nvarchar(MAX))
insert tablename
select '1','[{"city": "北京", "name": "张三", "tel": "123"}]'
go

CREATE FUNCTION func(@field nvarchar(255), @value nvarchar(MAX), @oper varchar(10))
RETURNS @temp table(fid INT, json NVARCHAR(max))
AS
BEGIN
DECLARE @sql NVARCHAR(MAX)
IF(@oper = 'like')
BEGIN
INSERT @temp
select fid, json from tablename where json LIKE '%'+ '"' + @field + '": "' + @value + '"' +'%'
end 
RETURN
end
GO

SELECT * FROM dbo.func('name','张三','like')

/*
fidjson
1[{"city": "北京", "name": "张三", "tel": "123"}]
*/

[解决办法]
--下面这个方法也行
ALTER FUNCTION func(@field nvarchar(255), @value nvarchar(MAX), @oper varchar(10))
RETURNS @temp table(fid INT, json NVARCHAR(max))
AS
BEGIN
DECLARE @sql NVARCHAR(MAX)
IF(@oper = 'like')
BEGIN
INSERT @temp
select fid, json from tablename 
where CHARINDEX('"' + @field + '": "' + @value + '"', json) > 0
end 
RETURN
end
GO

热点排行