xpertzgurtej Ответов: 2

Как искать текст nvarchar в хранимой процедуре


Я ищу текст nvarchar в своей хранимой процедуре. в качестве параметра передается текст nvarchar, подлежащий поиску.

образец таблицы

Объявить таблицу @tb (Id INT, имя NVARCHAR(100));

вставить в @tb значения (1,'Aman');
вставить в @tb значения (2,N'سانديب');
вставить в @tb значения (3,'Anuj');
вставить в @tb значения (4,N'فيكاس');
вставить в @tb значения (5,N'اليت');
вставить в @tb значения (6,'Sunil');
вставить в @tb значения (7,'Ajay');
вставить в @tb значения (8,N'فيشال');
вставить в @tb значения (9,'Tarun');

--выберите * из @tb


Объявить @str NVARCHAR(50)=N'سانديب'
Выберите * FROM @tb WHERE Name LIKE '%'+ @str +'%'

--Он работает нормально

Я знаю, что нам нужно префикс N' для поиска текста nvarchar. Но как я могу добавить этот параметр в хранимую процедуру

Что я уже пробовал:

DECLARE @str1 NVARCHAR(50)='سانديب'
Выберите * из @tb, где имя типа '%'+ @str1 +'%'

это не работает

DECLARE @str2 NVARCHAR(50)='سانديب';
Выберите * из @tb, где имя типа '%' + N" + @str2 + '%'

это все еще не работает

2 Ответов

Рейтинг:
2

RDBurmon

Попробовать это

CREATE PROCEDURE SEARCHTEXT

      -- Add the parameters for the stored procedure here

      @TEXT NVARCHAR(50)

AS

BEGIN

DECLARE @str1 NVARCHAR(50)
SET @str1=N'' + @TEXT 
SELECT * FROM @tb WHERE Name LIKE '%'+ @str1 +'%'


xpertzgurtej

& не может быть использован для конкатенации. Отображение ошибки :типы данных nvarchar и nvarchar несовместимы в операторе '&'.

RDBurmon

О да , так и должно быть +

RDBurmon

обновил свои решения. если сработало пожалуйста примите и проголосуйте

xpertzgurtej

Нет..это не работает, как в решение УР :
Объявить таблицу @tb (Id INT, имя NVARCHAR(100));

вставить в @tb значения (1,'Aman');
вставить в @tb значения (2,N'سانديب');
вставить в @tb значения (3,'Anuj');
вставить в @tb значения (4,N'فيكاس');
вставить в @tb значения (5,N'اليت');
вставить в @tb значения (6,'Sunil');
вставить в @tb значения (7,'Ajay');
вставить в @tb значения (8,N'فيشال');
вставить в @tb значения (9,'Tarun');


DECLARE @str NVARCHAR(50)='سانديب'

Объявить @str1 NVARCHAR(50)
SET @str1=N" + @str
Выберите * из @tb, где имя типа '%'+ @str1 +'%'

никакой результат

Рейтинг:
2

Richard Deeming

Попробуй:

DECLARE @str1 NVARCHAR(50) = N'سانديب' -- Add the missing "N" prefix here
SELECT * FROM @tb WHERE Name LIKE N'%'+ @str1 + N'%' -- And to the two "%" strings here