从IndexedDB检索具有部分字符串匹配的记录

时间:2014-05-29 14:31:14

标签: javascript database

我的联系人详细信息存储在indexDB中的JSON对象。有一个领域为" birthdate"它以04/05/2014dd/mm/yyyy)格式存储。

我想仅通过匹配dd/mm来检索记录。 我想要检索所有有特定生日的联系人(无论年份如何)。

1 个答案:

答案 0 :(得分:0)

有很多方法可以解决这个问题。 你能做的是创建一个只能解析列中的dd / mm的函数

然后在where子句中说@user_entry = dbo.fnc_GetDDMM(table.jsoncol)

该函数可以利用索引和子串在DOB:DD / MM之后拉出任何东西 使用您提供的示例,它看起来像

if object_id('dbo.GetBirthdayFromJson', 'fn') is not null
begin
    print 'drop: dbo.GetBirthdayFromJson'
    drop function dbo.GetBirthdayFromJson
end
go

print 'create: dbo.GetBirthdayFromJson'
go

create function dbo.GetBirthdayFromJson
(
    @json varchar(500)
)  
returns date
as  
begin 
    --declare @json varchar(500) = '{name:"sac",birthdate:"04/05/2014"}',

declare @birthday date
declare @birthdaystring varchar(50) = 'birthdate:"'

declare @blen int = len(@birthdaystring)
declare @bindex int = charindex(@birthdaystring, @json)




    set @birthday= substring(@json, @bindex + @blen, 10)

    return @birthday
end

然后你的地方可能会像这样

select * --dont use '*' but just an example
from sometable as table
where datepart(month, dbo.GetBirthdayFromJson(table.jsoncolumn)) == @somemonth 
and datepart(year, dbo.GetBirthdayFromJson(table.jsoncolumn)) == @someyear

希望这会有所帮助