在编写SQL服务器查询逻辑时,我需要一些帮助。 我有一个三列的表Xyz
我必须根据用户输入的json找到所有实体。
逻辑是这样的。
如果用户输入数组为{“ button”},则查询为 “从XYZ中选择*,其值类似于'%button%';”
如果用户输入为{“ button”,“ text”},则查询为: “从XYZ中选择*,其中的值如“%button%”或值如“%text%”;“
如果用户输入为{“ button”,“ text”,“ page”},则查询为: “从XYZ中选择*,其中(类似“%button%”的值或类似“%text%”的值)AND(类似“%button%”的值或类似“%page%”的值)AND(类似“%page%”的值或“%text%”之类的值)和(“%button%”之类的值或“%text%”之类的值或“%page%”之类的值);“
如果用户输入为{“ button”,“ text”,“ page”,“ element”},则查询为: “从XYZ中选择*,其中(类似“%button%”的值或类似“%text%”的值或“%page%”的值)AND(类似“%button%”的值或“%page%”的值或AND(例如“%element%”的值或“%page%”的值或“%element%”的值)AND(“%button%”的值或“%text%”的值OR值(例如“%element%”)或(例如“%button%”的值或“%text%”的值或“%element%”的值或“%element%”的值);“
如果用户输入为{“ button”,“ text”,“ page”,“ element”,“ add”},则查询逻辑应在and条件中设置一组4个元素。
因此,逻辑是我可以接收任何可能包含“ n”个元素的用户输入。对于那些n个元素,我需要添加n-1和上面的条件,并将结果返回给用户。如何编写逻辑来创建这样的查询?任何的意见都将会有帮助。
答案 0 :(得分:1)
如果用户输入的是{“ button”,“ text”,“ page”,“ element”}
尝试以下操作:
value
这里的基本要点是Like %..%
是一个比较函数,根据匹配,它将返回0或1。
从您的问题陈述中,似乎可以找到 n-1 个单词的任意组合,或,所有 n 个单词都可以被发现。
因此,需要在SELECT * FROM XYZ
WHERE ((value like '%value_1%') +
(value like '%value_2%') +
....
(value like '%value_n-1%') +
(value like '%value_n%')) >= n-1
中找到3个或更多输入关键字 。因此,所有这些比较条件的总和必须为至少3。这应注意所有可能的组合。
因此,对于 n 个输入,您将执行以下操作:
SELECT * FROM XYZ
WHERE value LIKE '%value_1%'
对于 n = 1 ,这是一种特殊情况,您只需执行以下操作:
{
"data": {
"sequence_length":30,
"train_test_split": 0.85,
"normalise": false,
"num_steps": 5
},
"training": {
"epochs":200,
"batch_size": 64
},
"model": {
"loss": "mse",
"optimizer": "adam",
"layers": [
{
"type": "lstm",
"neurons": 51,
"input_timesteps": 30,
"input_dim": 101,
"return_seq": true,
"activation": "relu"
},
{
"type": "dropout",
"rate": 0.1
},
{
"type": "lstm",
"neurons": 51,
"activation": "relu",
"return_seq": false
},
{
"type": "dropout",
"rate": 0.1
},
{
"type": "dense",
"neurons": 101,
"activation": "relu"
},
{
"type": "dense",
"neurons": 101,
"activation": "linear"
}
]
}
}