台灣最大程式設計社群網站
線上人數
2517
 
會員總數:245261
討論主題:189116
歡迎您免費加入會員
討論區列表 >> MS SQL >> 取得字串最大值
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
取得字串最大值
價值 : 50 QP  點閱數:483 回應數:8

樓主

momo
門外漢
0 2
92 8
發送站內信

假設於 table 某欄位(NVARCHAR(MAX) 存的內容如下

<table>
<tbody>
<tr>
<td>
<select name="test" field="s1" ord="1">
<option value="A">A</option>
<option value="B">B</option>
<option value="C">C</option>
</select>
</td>
</tr>
<tr>
<td>
<input name="type" id="type1" type="radio" checked="checked" value="D" field="r1" ord="2">
<input name="type" id="type2" type="radio" value="E" field="r2" ord="3">
</td>
</tr>
<tr>
<td>
<textarea field="t1" ord="4"></textarea>
</td>
</tr>
</tbody>
</table>


請問要怎麼取得ord為最大值(目前最大是 4)?
ord一定不一樣不會重複


搜尋相關Tags的文章: [ 最大值 ] ,
本篇文章發表於2019-07-02 14:50
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
最有價值解答

P陳
檢舉此回應
土法練鋼的話
atp1=0
do
atp1=instr(atp1,Fieldvalue,"ord")
if atp1=0 then exit do

atp2=instr(atp1+4,fieldvalue,"""")
str1= mid(取出 Atp1 atp2 中間的字)
分解 str1

atp1=atp2+2


loop

類似這樣 自已作看看
本篇文章回覆於2019-07-03 07:26
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

momo
檢舉此回應
不好意思
有點不懂這個邏輯

atp2=instr(atp1+4,fieldvalue,"""")
str1= mid(取出 Atp1 atp2 中間的字)
分解 str1

atp1=atp2+2

這是??
本篇文章回覆於2019-07-03 08:32
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
回應

小發
檢舉此回應
如果 [textarea field] 每次放的值都是最後的值 , 也是最大值 , 或許你可以試試用 substring(column , charindex('textarea field' , column) , ?)
類似這樣的語法

https://www.sqlservercurry.com/2016/08/sql-server-substring-with-charindex_7.html
本篇文章回覆於2019-07-03 10:27
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
回應

P陳
檢舉此回應
atp1 會找到 ord 所在位置 比如第 35

atp2=instr(atp1+4,fieldvalue,"""")
Atp2 會找到 ord=" 後的 " (然後要+5 才對 不是+4
比如 Atp1 =35 Atp2 = 41

<select name="test" field="s1" ord="1">
然後 從 40起 取1個字 (1 就是你要的答案了)
本篇文章回覆於2019-07-03 10:53
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
作者回應

momo
檢舉此回應
請問+5的用意是?
atp1=atp2+2 的意思是?

謝謝~
本篇文章回覆於2019-07-03 11:57
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
回應

P陳
檢舉此回應
ord=" <--- 共 5 個字 o在第35 要從第 40字開始取字元
atp1=atp2+2 的意思是? <--- 您自己作看看不就知道了

本篇文章回覆於2019-07-03 14:18
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
回應

P陳
檢舉此回應
如果是 ord = " 的話 (如果會加空格的話) 要改成
atp1= instr(atp1,fieldvalue,"ord")
atp1=instr(atp1+1,fieldvalue,"""") 取得第一個 "
atp2=instr(atp1+1,fieldvalue,"""") 取得第二個 "

Atp1 與 Atp2 中間的字就是你要的

本篇文章回覆於2019-07-03 17:20
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
8樓
作者回應

momo
檢舉此回應
好的, 感謝大大!!
本篇文章回覆於2019-07-04 09:45
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.