當前位置:首頁 » 編程語言 » sql欄位in一個字元串
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql欄位in一個字元串

發布時間: 2023-02-28 01:21:48

『壹』 sql IN 字元串查詢 急

如果真的只三條,你還不如直接寫
select * from t1 WHERE id='3' or id='4' or id='5' order by id
我很想問的是,你id這個欄位是什麼類型?
或者你用like吧,但是like不一定準,
select * from t1 WHERE id like '% & $name & %'
in 一般是用在針對數組,而你的 $name 只是一個字元串,除非你先拆成數組。
以上僅供參考

『貳』 sql語句中in的用法

IN 操作符允許我們在 WHERE 子句中規定多個值。

SQL IN 語法:

SELECT column_name(s)

FROM table_name

WHERE column_name IN (value1,value2,...)

(2)sql欄位in一個字元串擴展閱讀:

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遇到字元串

管理
ID 城市
5 '北京','上海'
你這個實際上是一個字元串
查詢的時候,將「'北京','上海'」當成一個字元串查詢,所以查詢不出來

select id,城市 from 地區 where (select 城市 from 管理 where id=5) like '%'+城市+'%'

『肆』 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方法,例如:

select  *  from Students  where ID in ('111', '222', '333');

或者

select  *  from Students  where Name in ('張三', '李四', '王五');

declare  @sql varchar(1000)

set @sql =  'select  *  from Students  where  1=1 '

set @sql = @sql + ' and ID in ('+ @整型參數+') '

declare  @sql varchar(1000)

declare @strLen int

declare @next int

declare @where varchar(1000)

set @sql =  'select  *  from Students  where  1=1 '

if(@userId<> '')

    begin

         set @strLen= dbo.Get_StrArrayLength(@userId,',')

         set @next=1

         set @where=''

if(@strLen > 0)  begin

   set @sql=@sql+' AND (UserID IN ('

   while @next<=@strLen begin

   set @where=@where+ ','''+ dbo.Get_StrArrayStrOfIndex(@userId,',',@next) +''''

   set @next=@next+1

end

if(LEN(@where) > 3)  begin

   set @where= SUBSTRING(@where, 2, LEN(@where))

end

set @sql=@sql + @where +'))'

end

end

『陸』 sqlserver中想用in判斷范圍,但只能輸入一個字元串參數,如何拆字元串然後動態拼in()裡面的內容呢

字元串應該類似'a,b,c,d' 或者'1,2,3,4'這樣的吧?
拼字元串 set @str='select * from tb where 欄位 in ('+char(39)+replace('字元串',',',char(39)+','+char(39)))+char(39)+')'
exec(@str)
就是把'a,b,c,d' 替換成 ('a','b','c','d')

『柒』 sql in 字元串

沒大懂你的意思..

是不是

Split(',')...??然後可以得到每個子字元串.

然後再 in 每個子字元串.

-------------------

string str="abc,cde,egf";
string[] val=str.Split(',');
string newstr="";
for(int ii=0;ii<val.Length;ii++){
newstr=newstr+"'"+val[ii]+"'"+",";
}
newstr=newstr.SubString(0,newstr.Length-1);//去掉最後一個逗號

//得newstr值為:'abc','cde','egf'

------------------

不用在存儲過程里實現...你在程序里把字元串處理成上面的那樣兒.然後再使用存儲過程.傳的參數是處理後的字元串.

『捌』 in在sql中是什麼意思

select * from table where id in (1,3,5)
查詢表裡 id 是1 或者3 或者5 的記錄
select * from table where name in ('小明','小紅','小麗')
查詢表裡 name 等於 小明 或者小紅 或者 小麗的記錄
還有not in