Zmienna we wzorze LIKE '%%' [MS SQL Server 2014]

0

Witam

Czy jest jakiś sposób, aby w klauzuli LIKE umieścić zmienną i wyszukiwać tekst, gdzie zawartość zmiennej będzie częścią całości? Chodzi mi wzór LIKE '%szukanytekst%'?

Niżej to co przeszło mi do głowy, ale nie działa:

declare @word as varchar(250)
set @word = N'firma'

select nazwa, adres
from firmy
where nazwa LIKE '%@word%'

Jakieś pomysły jak to zrobić?

2
declare @word as varchar(250)
set @word = N'firma'

select nazwa, adres
from firmy
where nazwa LIKE '%'+@word+'%'
1

BTW wiesz, że takie wyszukiwanie jest najgorszym z możliwych

0
Panczo napisał(a):
declare @word as varchar(250)
set @word = N'firma'

select nazwa, adres
from firmy
where nazwa LIKE '%'+@word+'%'

Działa, dzięki.

Mam jeszcze jedno pytanie.

Prefiks "N" dodałem, żeby wyszukiwać również polskie znaki. W zwykłym warunku 'WHERE nazwa LIKE '%firma%' prefiks był niezbędny. Jak to zastosować również do zmiennej?

0

Jakiego typu jest kolumna nazwa w tabeli firmy?
Jakie collation ma serwer, a jakie baza?

Generalnie prefix N powodouje tylko, ze string będzie konwertowany do Unicode

0
Panczo napisał(a):

Jakiego typu jest kolumna nazwa w tabeli firmy?
Jakie collation ma serwer, a jakie baza?

Generalnie prefix N powodouje tylko, ze string będzie konwertowany do Unicode

Typ kolumny to nvarchar.
Collation bazy i servera to SQL_Latin1_General_CP1_CI_AS

1

Zmień deklarację:

DECLARE @word AS NVARCHAR(250)
1

No to wiele wyjaśnia collation "nie obsługuje" domyslnie polskich znaków, chyba że sie myle i znajdziesz je tutaj: https://msdn.microsoft.com/en-us/library/cc195054.aspx

Teraz prosty test, który da ci odpowiedź na to dlaczego nie działały polskie znaczki:


DECLARE @zN  VARCHAR(250) = N'ęóąśłżźćń' collate SQL_Latin1_General_CP1_CI_AS 
DECLARE @bezN  VARCHAR(250) = 'ęóąśłżźćń' collate SQL_Latin1_General_CP1_CI_AS 

select @zN, @bezN

Wynik:

@zN @bezN
ęóąśłżźćń eóaslzzcn

I jak pisał @Marcin.Miga używaj typów zgodnych z kolumna w bazie

0

Ok, dzięki za pomoc.

1 użytkowników online, w tym zalogowanych: 0, gości: 1