2013-09-16 31 views
-1

可以說我有在員工表中的下列數據:(而已)SQL server - 如何在文本列中找到'<>'中的最大數字?

ID FirstName LastName   x 
    ------------------------------------------------------------------- 
    20 John  Mackenzie   <A>te</A><b>wq</b><a>342</a><d>rt21</d> 
    21 Ted   Green    <A>re</A><b>es</b><1>t34w</1><4>65z</4> 
    22 Marcy  Nate    <A>ds</A><b>tf</b><3>fv 34</3><6>65aa</6> 

我需要在X欄來搜索並獲得最高數量<>這些括號

什麼樣的的SELECT statement可以讓我,例如,數字6在< 6>,在X列?

+0

是您的需求是固定的像你需要用<6>記錄每一次,或者你正在尋找一些更廣義的? –

+2

嘗試將該值存儲在其他列中,使用這樣的值非常困難。 – davey

+0

如果你無法繞過將所有這些數字嵌入到一列中的字符串中,那麼你可能會希望對模式執行「RegEx」搜索並從中選擇最大值,但不幸的是,SqlServer似乎沒有原生支持。您需要按照此處所述編寫'CLR-Function' http://stackoverflow.com/a/8928436/2186023 – DrCopyPaste

回答

0

這種類型的查詢通常用於查找模式,我認爲<6>位於左起第9位。

請注意,如果模式更改下面的查詢將無法正常工作。

SELECT A.* FROM YOURTABLE A INNER JOIN 
(SELECT TOP 1 ID,Firstname,Lastname,SUBSTRING(X,LEN(X)-9,1) AS [ORDER] 
FROM YOURTABLE 
WHERE ISNUMERIC(SUBSTRING(X,LEN(X)-9,1))=1 
ORDER BY SUBSTRING(X,LEN(X)-9,1))B 
ON 
A.ID=B.ID AND 
A.FIRSTNAME=B.FIRSTNAME AND 
A.LASTNAME=B.LASTNAME 
+0

只是在某些索引處檢查字符方式太具體。 – Dukeling

+0

你也似乎只檢查一個數字,如果有一個數字在'<>'之間有多個數字? – DrCopyPaste

+0

對於原生T-SQL在少於100行的代碼中處理,要求聽起來太複雜了...... – Charleh

相關問題