[QUOTE=fakhravari;2468084]

SELECT * FROM WareHouse.INV_Kala p
JOIN (SELECT * FROM STRING_SPLIT (N'کرم چندمنظوره',N' '))x ON p.Kala_FarsiDesc LIKE N'%'+x.value+'%'


سلام و روز خوش
استفاده از STRING_SPLIT هوشمندانه بود،
ولی اینجا چون JOIN کردین همه رکوردهایی که هریک از واژه ها رو داشته باشه برمیگردونه: چه "کرم" چه "چندمنظوره"،
ولی خواسته این هست که همه اینها رو داشته باشه - بدون ترتیب.


فرض کنید در یک دیتا نمونه از مشخصات فیلم ها،
دنبال Title هایی هستیم که هر سه واژه the - gun - man رو داشته باشه - بدون ترتیب:
USE SHOWS;
SELECT IMDBID , Title , Genres
FROM Shows
WHERE TITLE LIKE N'%man%' AND TITLE LIKE N'%the%' AND TITLE LIKE N'%gun%'

Screenshot 2024-04-30 234713.png


حالا اجازه بدین کد شما رو تست کنیم:
USE SHOWS;
SELECT IMDBID , Title , Genres
FROM Shows
JOIN (SELECT * FROM STRING_SPLIT (N'man the gun',N' ')) x
ON Shows.Title LIKE N'%'+x.value+'%'

Screenshot 2024-04-30 235836.png


همینجور که میبینین هر رکوردی رو که فقط یکی از واژه ها رو هم داشته باشه میاره،
و البته اگر بیشتر از یکی باشه تکراری هم میاره - ردیف 2 و 3 رو دقت کنین یا تصویر پایین که هر چون هر 3 مورد بوده 3 رکورد آورده:

Screenshot 2024-05-01 000451.png