![]() ![]() ![]() ![]() |
|||||
|
|||||
樓主 tiger ![]()
![]() |
A攔ABCD B攔AB 最後取出CD
本篇文章發表於2014-05-09 10:17
|
1樓 |
這個應該沒辦法用SQL直接做
用ASP的字串取代函數吧 如果A欄位內容是A,B,C,D這種形式的話 就要將AB欄位的內容先拆成陣列再比對處理
本篇文章回覆於2014-05-09 13:51
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
2樓
作者回應
tiger ![]() |
我試著用陣列比對方式如下,但得到的結果和我想要的不同,請各位幫我看看哪裡有問題呀
a= rs2("A欄位") b= rs2("B欄位") aa=split(a,",") bb=split(b,",") for i=0 to ubound(aa) for j=0 to ubound (bb) if aa(i)<>bb(j) then s=s+aa(i)&"," end if next next response.write s
本篇文章回覆於2014-05-09 13:57
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
3樓 |
當然會錯啊
假設 aa(0)="A" aa(1)="B" aa(2)="C" aa(3)="D" bb(0)="A" bb(1)="B" 你的比對方式 當i=0的時候,j=0雖然相同不加入字串,但是j=1時就會因為相異而將值串入字串中 稍微修改一下試試看
本篇文章回覆於2014-05-09 15:54
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
4樓
作者回應
tiger ![]() |
還是不行耶,得到的答案還是不對耶
本篇文章回覆於2014-05-09 20:48
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
5樓 |
T-SQL 語法, 是這樣吧..
SELECT CASE WHEN CHARINDEX(B攔, A攔) = 1 THEN REPLACE(A攔,B攔,'') ELSE A欄 END from table1 又或是 SELECT A欄 from table1 where A欄 not in (select distinct B欄 from table1) 不是很確定你所指的 A攔ABCD, B攔AB 的意思! 在A欄中, 是 ABCD 串在一起...還是有可能為 A 或 B 或 C 或 D 同樣在B欄中是 AB 串在一起...還是有可能為 A 或 B 呢? 如果是串在一起, 就是第一種, 不然就是第二種了.
本篇文章回覆於2014-05-09 23:14
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
6樓
作者回應
tiger ![]() |
事實上
我的兩個欄位是人名 A欄值為(阿明,阿正,張三,小明) B欄值為(阿明,阿正) 兩欄比對取出不一樣的人名 最後取出 張三和小明 風燭殘年兄 我用你第一個sql語法不能用呢 不知是為甚麼
本篇文章回覆於2014-05-10 09:19
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
7樓 |
請把你的a,b和s列印出來看看,以及你期望得到的答案是什麼
光是講不一樣,也沒辦法判斷到底問題出在哪
本篇文章回覆於2014-05-12 09:48
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
8樓 |
如果你的欄位資料是
A欄值為(阿明,阿正,張三,小明) B欄值為(阿明,阿正) 那麼在 SQL 中就不是那麼好處理. 就我的建議就是取出資料後,再來進行資料的比對! a= trim(rs2("A欄位")) b= rs2("B欄位") bb=split(b,",") for i=0 to ubound(bb) if InStr(a,trim(bb(i))) > 0 then a = replace(a,trim(bb(i)),"") a = replace(a,",,",",") end if next if LEFT(a,1) = "," then a = RIGHT(LEN(a)-1) if RIGHT(a,1) = "," then a = LEFT(LEN(a)-1) aa = split(a,",") for i=0 to ubound(aa) response.write aa(i) & "<br>" next
本篇文章回覆於2014-05-12 13:20
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
9樓
作者回應
tiger ![]() |
Microsoft VBScript 執行階段錯誤 錯誤 '800a01c2'
引數的個數錯誤或指定了不正確的屬性: 'LEFT' 1.asp, 行60 if RIGHT(a,1) = "," then a = LEFT(LEN(a)-1) 好像這行有問題耶
本篇文章回覆於2014-05-12 14:12
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
10樓 |
打太快...打錯了...
if LEFT(a,1) = "," then a = RIGHT(LEN(a)-1) if RIGHT(a,1) = "," then a = LEFT(LEN(a)-1) 要改為 if LEFT(a,1) = "," then a = RIGHT(a, LEN(a)-1) if RIGHT(a,1) = "," then a = LEFT(a, LEN(a)-1)
本篇文章回覆於2014-05-12 23:21
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
11樓
作者回應
tiger ![]() |
謝謝兩位學長熱情相助
特別感謝風燭殘年兄 讓我百思不解的問題有了答案。
本篇文章回覆於2014-05-14 11:38
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
回覆 |
如要回應,請先登入. |