View Full Version : سوال: دستور Contains در SQL Server
mehran6764
شنبه 16 مهر 1401, 01:24 صبح
سلام ، وقت همگی بخیر
string s1 = "13-17-16-15";
می دونیم با سی شارپ اگر s1.Contains(7)) رو چک کنیم جواب برابر false خواهد بود
اما اگر خود s1.Contains(17)) ، مقدار true برمی گرده ..
اما متاسفانه دستور Contains تو SQL server ایجوریه که اگه تو همون عبارت s1 بخواییم چک کنیم
عدد 7 برمی گرده ، چون این عدد 7 داخل 17 هست ، 17 هم برمی گردونه
می دونم شاید نتونستم شفاف توضیح بدم
ولی سوالم اینکه تو چطور SQL server بین رشته هایی که همچین فرمتی دارن
3-15-17
کوئری بزنم که اگه دنبال 5 هستم ، دیگه رکوردهایی که 15 دارن برام نیاد
یا اگر بخوام ساده تر بگم : معادل دستور Contains در سی شارپ رو نیاز دارم که عملکردش هم مث همین متد باشه
mazoolagh
شنبه 16 مهر 1401, 17:38 عصر
می دونیم با سی شارپ اگر s1.Contains(7)) رو چک کنیم جواب برابر false خواهد بود
1- نتیجه بطور منطقی باید true باشه، هم برای 7 و هم 17 ، چون شما در یک string چک میکنین.
اگر s1 لیست باشه گفته شما درست درمیاد.
2- در بخش TSQL مطرح کنین بهتره.
mehran6764
یک شنبه 17 مهر 1401, 09:26 صبح
1- نتیجه بطور منطقی باید true باشه، هم برای 7 و هم 17 ، چون شما در یک string چک میکنین.
اگر s1 لیست باشه گفته شما درست درمیاد.
2- در بخش TSQL مطرح کنین بهتره.
ممنون از پاسخ و توجه شما
اما بررسی همین رشته با متد مشابه تو سی شارپ false برمی گردونه آ ، یعنی سی شارپ غیرمنطقیه ؟:متفکر:
تالار دات نت باز نسبت به بقیه بخش ها چند نفری هستن ، برا همین اینجا پرسیدم
mazoolagh
یک شنبه 17 مهر 1401, 11:52 صبح
حتما یک جای کار اشتباه میکنین:
using System;
public class Program
{
public static void Main()
{
string s1 = "13-17-16-15";
Boolean b7 = s1.Contains("7"); // true
Boolean b17 = s1.Contains("17"); // true
Console.WriteLine(b7.ToString());
Console.WriteLine(b17.ToString());
}
}
https://dotnetfiddle.net/2CWEb8
using System;
using System.Collections.Generic;
public class Program
{
public static void Main()
{
List<string> s1 = new List<string>();
s1.Add("13");
s1.Add("17");
s1.Add("16");
s1.Add("15");
Boolean b7 = s1.Contains("7"); // false
Boolean b17 = s1.Contains("17"); // true
Console.WriteLine(b7.ToString());
Console.WriteLine(b17.ToString());
}
}
https://dotnetfiddle.net/egYUzw
mazoolagh
یک شنبه 17 مهر 1401, 11:58 صبح
در sql باید همه حالتهای ممکن رو چک کنین: دقیق برابر، اول، وسط، آخر.
select * from table_name
where (s1 like '17')
or
(s1 like '17-%')
or
(s1 like '%-17-%')
or
(s1 like '%-17')
mehran6764
یک شنبه 17 مهر 1401, 14:06 عصر
در sql باید همه حالتهای ممکن رو چک کنین: دقیق برابر، اول، وسط، آخر.
select * from table_name
where (s1 like '17')
or
(s1 like '17-%')
or
(s1 like '%-17-%')
or
(s1 like '%-17')
در مورد سی شارپ حق با شما بود ، من اشتباه دیده بودم . ممنون تصحیح کردین
خدا خیرتون بده کد دوم هم درسته
--
پی نوشت : ایجور که خوندم ظاهرا با STRING_SPLIT می شد کارایی انجام داد ولی با کد شما مشکلم حل شد.ممنونم
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.