У меня есть некоторые проблемы здесь, у меня на самом деле была одна и та же проблема на некоторое время, но я взламываю и заставляю ее работать в конце, но я хотел бы знать, пропустил ли я простой способ сделать это.
Скажите, есть ли у меня:
Field input 1
Field input 2
Field input 3 (empty)
Field input 4
I want to query SELECT * FROM tbl_table WHERE field1 LIKE ? AND field2 LIKE ? AND field3 LIKE ? AND field4 LIKE ?
В основном я вхожу в проблему, когда вход пуст, потому что он ищет в поле и ищет нуль или другую строку, когда я хочу, чтобы он просто отменил оператор LIKE пустого ввода.
Я знаю, что это может показаться очень плохим, но его трудно понять.
SELECT * FROM tbl_table WHERE (field1 IS NULL OR field1 LIKE ?) AND (field2 IS NULL OR field2 LIKE ?) AND ....
По существу, вам нужно проверить значение переменной в предложении where. Проверьте, является ли оно нулевым или имеет значение, подобное этому.
Declare @input1 varchar(50);
Declare @input2 varchar(50);
Declare @input3 varchar(50);
Declare @input4 varchar(50);
SET @input1 = 'a'
SET @input2 = 'b'
SET @input3 = NULL
SET @input4 = 'c'
SELECT
*
FROM tbl_table
WHERE
(@input1 is null OR field1 LIKE @input1)
AND (@input2 is null OR field1 LIKE @input2)
AND (@input3 is null OR field1 LIKE @input3)
AND (@input4 is null OR field1 LIKE @input4)