显示具有电子邮件我们可以用、[email protected]
或[email protected]
的所有数据对象,但前提是这些对象还具有与其关联的标签A
和B
。
SQL
来表示这一点:
SELECT * from dataPoints
WHERE userEmail in ("[email protected]", "[email protected]", "[email protected]")
...
我想知道如何最好地将其编码为 JSON,以便前端用户可以保存过滤器。我们希望将“代表用户选择的 JSON”存储在数据库中,从数据库中检索它,并将其应用于 JSON 数据(即过滤发生在浏览器中)。我想我可以用 JSON 表示查询指令,就像它是如何完成的
here,但我想知道......这不是一个已解决的问题吗?是否有方法可以将用户过滤器选择编码为 JSON 并执行客户端过滤?
DECLARE @YOURTABLE TABLE (id int not null identity(1,1), email varchar(50), username varchar(50))
insert into @YOURTABLE values ('[email protected]', 'Aaaaa'),('[email protected]', 'XXXxxxxxx'),('[email protected]', 'Yyyyyyy'),('[email protected]', 'Zzzzz')
--jason can be saved in client or in DB for user.. etc...
DECLARE @paramJSON nvarchar(max) = N'{"emails":["[email protected]","[email protected]","[email protected]"]}'
--this would be inside a stored proc or script
;with _values as (
SELECT email = b.value
FROM OPENJSON(@paramJSON, '$')
WITH (
em NVARCHAR(MAX) '$.emails' AS JSON
) a
CROSS APPLY OPENJSON(a.em,'$') b
)
select v.email, t.id, t.username
from @YOURTABLE t
INNER JOIN _values v on v.email = t.email
输出:
|电子邮件|ID|用户名|
|---|---|---|
|[电子邮件受保护] |2| XXXxxxxxx| |[电子邮件受保护] |3| yyyyyy| |[电子邮件受保护] |4|嘶嘶|