#c# #mysql #sql #asp.net #sql-server
#c# #mysql #sql #asp.net #sql-сервер
Вопрос:
сетевое веб-приложение со страницей поиска У меня есть 3 текстовых поля для выполнения фильтрованного поиска, если я ввел текст во все текстовые поля, результат будет отображаться, но когда я ввел текст только в одно текстовое поле, результат не отображается. мой вопрос в том, как я могу выполнять поиск данных, если я ввел текст только в одно текстовое поле.текстовое поле или два или все текстовые поля, и мой запрос показан ниже:
SELECT Emp_NUM, Full_name, Mother_Name, Date_of_Birth, Province_of_birth, Job
FROM [Emp Main Table]
WHERE (Full_name LIKE '%' @Full_name '%' OR Full_name IS NULL) AND
(Mother_Name LIKE '%' @Mother_Name '%' OR Mother_Name IS NULL) AND
(Date_of_Birth LIKE '%' @Date_of_Birth '%' OR Date_of_Birth IS NULL)
Ответ №1:
Используйте:
rtrim(coalesce(@Full_name, '')) = ''
Вместо:
@Full_name is null
Для проверки на пустые или пустые значения
Комментарии:
1. Почему @Anand вы можете объяснить
2. Например, если ввод пользователя представляет собой пробел, этот код удалит его, поскольку пробел не равен null
Ответ №2:
Может быть, так:
SELECT [Emp_NUM]
,[Full_name]
,[Mother_Name]
,[Date_of_Birth]
,[Province_of_birth]
,[Job]
FROM [Emp Main Table]
WHERE ([Full_name] LIKE '%' @Full_name '%' OR RTRIM(COALESCE(@Full_name,''))='')
AND ([Mother_Name] LIKE '%' @Mother_Name '%' OR RTRIM(COALESCE(@Mother_Name,''))='')
AND ([Date_of_Birth] LIKE '%' @Date_of_Birth '%' OR RTRIM(COALESCE(@Date_of_Birth,''))='')
Комментарии:
1. да, верно, я забыл указать это здесь?
2. Вы заметили, что @Full_name РАВНО NULL вместо Full_name РАВНО NULL? Вы должны проверить, возвращает ли пустое текстовое поле NULL — это не обязательно.
3. это мое плохое спасибо за помощь, брат, с наилучшими пожеланиями
4. Я обновил код тем, что показал Ананд ниже. Он будет работать с пробелами в текстовом поле.