Database 板


LINE

Hi,分享一下我最新的做法, 避免以後的人看到我的原文的留言被誤導XD (結果是對的,但作法太爛) 前情提要: 假設有一個表格如下(tbPeopleInfo) Name Age Gender 1 Alex 30 Male 2 Ben 25 Female 3 Clark 24 Male 4 Dean 50 Female 5 Erik 73 Female User希望可以多選,有時選Alex,有時選Alex跟Erik,有時選Clark跟Erik 並回傳被選中的人的姓名、年齡、性別等資料 --------------------------------------------------- ***方法1. 使用Table Variable (這是我推文提到的方法的改良版) Step A. Create 一個 Table Variable Step B. Create 一個 Stored Procedure並傳入此Table Variable Step C. 將此Tale Variable和資料表格做Join --------------------------------------------------- ***方法2. 動態組SQL (我是在ASP.NET組動態語句) using (SqlConnection con = new SqlConnection(connectionstring)) { SqlCommand command = new SqlCommand(); command.Connection = con; StringBuilder dySQL = new StringBuilder("Select * from tbPeopleInfo"); dySQL.Append(" where 1 = 1 "); dySQL.Append(" and Name = 'Alex'"); dySQL.Append(" or Name = 'Ben'"); command.CommandText = dySQL.ToString(); con.Open(); SqlDataReader reader = command.ExecuteReader(); GridView1.DataSource = reader; GridView1.DataBind(); } (應該也可以在SP中組,但是我還不會= =) --------------------------------------------------- ***方法3. 動點手腳組input 並使用IN (這是我最後使用的做法) Step A. 將Input組成 'Alex,Ben' (用逗號隔開人名) Step B. 建立一個可以Split 逗號 的Function,此Function回傳Table (SQL Server 2016之後內建Split,我使用2012所以才要自己寫) Step C. where Clause 使用 IN 在SSMS中只有簡單四行 Declare @Input nvarchar(max) Set @Input = 'Alex,Mango,Clark,Guava' Select Name, Age, Gender from tbPeopleInfo where Name in (SELECT * FROM dbo.SplitString(@Input, ',')) 前兩行就是Stap A 後兩行使用IN 完成!! 基本上,整個方法3.可在此網頁找到,整個Credit都是他的!! http://bit.ly/2qMBh4r 也感謝某個來信跟我討論的前輩~ 雖然我最後沒有用你的方法,不過也是學到不少!! 也分享給需要的人 --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 172.218.191.30
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Database/M.1496559262.A.353.html ※ 編輯: meteor007 (172.218.191.30), 06/04/2017 14:56:12 ※ 編輯: meteor007 (172.218.191.30), 06/04/2017 14:57:24
1F:→ tedcat: 。。。原po你既然用方法3 為何不 06/06 16:39
2F:→ tedcat: 在asp.net組好 in('alex','xxxx')就好 06/06 16:40
3F:→ tedcat: 然後用方法2把sql語句換成最後組完語句就好 06/06 16:42
4F:推 streetbad: 推樓上 拆字或是加減乘除等等之類的運算建議前端先處理 06/06 16:59
5F:→ meteor007: 恩,最後我是這樣做的沒錯,這篇只是範例XD 06/06 17:40







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:WOW站內搜尋

TOP