sqlin逗號
❶ in在sql中是什麼意思
select * from table where id in (1,3,5)
查詢表裡 id 是1 或者3 或者5 的記錄
select * from table where name in ('小明','小紅','小麗')
查詢表裡 name 等於 小明 或者小紅 或者 小麗的記錄
還有not in
❷ sql in用法
看你的C的類型,如果是int就是:in(1,2,3,4,5);如果是string就是in('ab','ac','bb','bc')這樣的
❸ [SQL語句]關於IN的一個問題
直接寫數組名當然不行,你那個數組明顯是程序中定義的,不能在sql中使用。
sql中是不能使用數組的。只有像oracle的pl/sql一類sql擴展程序中能定義數組,但也不是你那種寫法。
如果數組是固定值,AA是數字型,這樣寫就可以了:
SELECT * FROM TABLE WHERE AA IN (1,45,375,48,98,46)
AA是字元型就加單引號:
SELECT * FROM TABLE WHERE AA IN ('1','45','375','48','98','46')
如果數組是變數,就只能構造查詢字元串:
"SELECT * FROM TABLE WHERE AA IN ("&Ary(0)&","&Ary(1)&","&Ary(2)&","&Ary(3)&","&Ary(4)&","&Ary(5)&")"
同樣,AA是字元型就在構造時加單引號。
-----------------------------------------------------------
數組元素值是未知的?不太明白你的意思。
如果是未知的就沒法查詢,必需有確定值才能用sql來查詢。
如果是變數,按上面數組變數的方式來寫不就行了嗎?當然首先要給變數賦值才行。
-----------------------------------------------------------
呵呵,是這樣啊,這個也不難啊,用UBound函數取數組最大下標,構造sql查詢串時循環最大下標次不就行了么?類似下面這樣的寫法:
sql = "SELECT * FROM TABLE WHERE AA IN (" '初始化查詢字元串
For i = 0 to UBound(Ary) '從0循環到數組最大下標
sql = sql & Ary(i) & "," '將數組中每個值加在查詢字元串後面
Next
sql = Left(sql,Len(sql)-1) & ")" '將最後一個逗號換為反括弧
(如果用java就用Ary.ubound方法,同樣的效果。)
❹ SQL中逗號分隔的查詢結果轉換成單個字元串放到in語句里
select student from xxhd a, school b where patindex('%' || a.school || '%',b.school)>0
❺ sql in()語句
你這樣構造in的范圍不對。你這樣是把in後面處理成一個字元串了。而in後面跟的應該是一個范圍。
你可以自己寫一個返回數據集的函數來將aa.ddid值處理成in的范圍,
類似於:
假設函數:
ft01(nvarchar(1000))
returns
table
tb
(val
int)。
那麼,
這樣更新裡面子查詢的in條件:
where
id
in
(select
val
from
ft01(aa.ddid))。
另外,
此解決方法只是從in條件上來說。
如果子查詢只有1條記錄,in和=是沒有區別,如果子查詢有多條記錄,用=會出錯的,所以in是無論只查詢有多少條記錄都可以使用,而=只有當子查詢只有1條記錄的時候才能使用。
in和exists理解上其實是差不多,但對資料庫而言,in的執行順序是先執行只查詢條件,然後把記錄和外查詢核對,找符合條件的。
而exists是先執行外查詢,再執行子查詢,找到外查詢記錄後和只查詢對比符合條件的,如果外查詢和子查詢的條目數差異很大,那麼效率相差很明顯的。
❻ sql語句中in的用法
IN 操作符允許我們在 WHERE 子句中規定多個值。
SQL IN 語法:
SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1,value2,...)
(6)sqlin逗號擴展閱讀:
1、IN 與 = ANY 等價,均表示,變數在(子查詢)列表之中,即 a IN (table B) 表示 a = ANY B.b
2、NOT IN 與 <> ALL 等價,而不等於<> ANY,前兩者均表示,變數不在(子查詢)列表之中,即 a NOT IN (table B) 表示 a <> ALL B.b。而如果a <> ANY B.b,則只要任意一個b<>a就true了。
3、IN 與 EXISTS 的性能區別主要來自,IN 會編列子查詢的每行記錄,然後再返回,而EXISTS 則只要遇到第一個滿足條件的記錄就馬上返回。
❼ SQL語句中in是否只能作用於一個欄位而不能作用於多個欄位
where (a,b) in ( (1,2,3),('a','b','c') )
2個括弧
❽ C#代碼處理SQL語句中in操作
//將list轉化為形如「1,2,3,4」這樣的字元串
public static string ConvertToStr(IList<string> list)
{
try
{
var sb = new StringBuilder();
foreach (var t in list)
{
sb.Append("'");
sb.Append(t);
sb.Append("'");
sb.Append(",");
}
if (sb.Length > 0)
sb.Remove(sb.Length - 1, 1);
return sb.ToString();
}
catch (Exception)
{
return "";
}
}
查詢的時候:
var inStr=ConvertToStr(list);
var select=string.Format("select * from table where id in ({0})",inStr)
❾ sql中 in的用法
上面的答案好像和樓主的有點出入哦,感覺怪怪的,更新過??
select
*
from
proct
where
cid
in
(select
cid
from
category
where
pid
=10
);
解決樓主的問題,直接這樣就夠了也很好理解
就是先在category表裡面得到所有小類的cid,然後和proct表連接,輸出產品名
不過這里用in是方便理解的,性能上好不好還真不好說
❿ 「sql」語句中「in」怎麼用
你這樣構造in的范圍不對。你這樣是把in後面處理成一個字元串了。而in後面跟的應該是一個范圍。
你可以自己寫一個返回數據集的函數來將aa.ddid值處理成in的范圍, 類似於:
假設函數: ft01(nvarchar(1000)) returns table tb (val int)。
那麼, 這樣更新裡面子查詢的in條件:
where id in (select val from ft01(aa.ddid))。
另外, 此解決方法只是從in條件上來說。