Переменная Temp, используемая в select Query
Я попытался извлечь данные из таблицы, используя временную переменную. Временная переменная возвращает правильные данные, но когда вы пытаетесь использовать ее в Query, она не возвращает правильный набор данных. Я попытался получить данные с использованием жестко запрограммированного значения temp в запросе, он отлично работает. Может ли кто-нибудь помочь мне найти проблему здесь?
Ниже мой код, который я пробовал
Declare @tempwordFinal varchar(50) select @tempwordFinal = ''''+'%'+'The Big Bang'+'%'+'''' select @tempwordFinal --here the output is - '%The Big Bang%' SELECT * from MasterProgram where ProgramTitle like @tempwordFinal --not working SELECT * from MasterProgram where ProgramTitle like '%The Big Bang%' -- working
- Поиск ключевого слова с LIKE% %
- Группировать с помощью LIKE Operator и игнорировать значение NULL
- Каков наилучший способ вернуть результаты, похожие на вход?
- Добавление оператора LIKE в предложение WHERE (динамический SQL)
- Есть ли альтернатива запросу LIKE в T-SQL?
- SQL WHERE Like Clause не возвращает все результаты
- SQL Server - LIKE Operator работает при поиске частичной строки, но не цельной строки
- Запрос с инструкцией LIKE для любого из слов, а не целых
- Microsoft SQL «не нравится» vs <>
- SQL Server как поведение оператора для %%
- SQL LIKE Производительность с использованием только шаблона (%) в качестве значения
- Как найти строку с одной строкой цитаты из таблицы?
- Пустая привязка строковых переменных к условиям LIKE в SQL
Поскольку переменная @tempwordFinal
имеет одинарные кавычки в начале и в конце. Поэтому он ожидает, что данные в столбце ProgramTitle
будут иметь одинарные кавычки в начале и в конце. Кроме подстановочных знаков, которые присутствуют внутри переменной, будут рассматриваться как данные, поэтому она терпит неудачу.
select @tempwordFinal --here the output is - '%The Big Bang%' ^ ^
Попробуйте этот путь
Declare @tempwordFinal varchar(50) select @tempwordFinal = '%The Big Bang%' select 1 where 'The Big Bang' like @tempwordFinal
Когда вы используете переменные для типа данных varchar
нам не нужны одинарные кавычки. Одиночные кавычки требуются только при жестком кодировании строковых констант
Проблема заключалась в ваших (ускользающих) дополнительных апострофах. Как это ''''
. Вам это не нужно, если вы не ищете слова в базе данных, которые явно содержат апострофы. Исправленный код выглядит следующим образом:
Declare @tempwordFinal As Varchar(50); Set @tempwordFinal = '%The Big Bang%'; Select @tempwordFinal; -- %The Big Bang% SELECT * from MasterProgram where ProgramTitle like @tempwordFinal;