1

私はあなたの知識豊富な多くの一人がこれで私を助けることができることを願っています...

DBにHTMLを含むフィールドがあります。このHTML内では、各レコードにパラメーターが含まれているリンクがあります。

例えば。

<a href='http://mysite.com/clickme.aspx?ctid=31' title='Click Here !' target='_blank'>Click this link</a>

返したいのは、レコードのIDと、パラメーターCTidの値だけです(CTidは2桁から12桁の長さのいずれかです)

だから、私が返したいのは:

ID ¦ CTid ¦
73 ¦ 31   ¦

PATINDEXを使用してみましたが、うまくいきません(返される文字列の長さを指定する必要があるため)

SELECT id, SUBSTRING(content, PATINDEX('%CTid%', content), 12) AS CTid
FROM ARTICLES
WHERE content LIKE '%CTid%'

戻り値:

   ID ¦ CTid         ¦
   73 ¦ ctid=31' tit ¦

誰かがこれを行うための良い方法に光を当てることができますか?

数千行を返すので、可能であればカーソルや集中的な操作は避けたいと思います。

どうもありがとう :)

4

3 に答える 3

1

このクエリはどうですか、mssqlサーバーで動作します:

SELECT ID, SUBSTRING(CTid, 0, PATINDEX('%''%', CTid))
FROM(
    SELECT ID, SUBSTRING(content, PATINDEX('%CTid%', content)+5, 12)+'''' AS CTid
    FROM ARTICLES
    WHERE content LIKE '%CTid%'
)X
于 2012-11-02T12:36:22.343 に答える
1
SELECT ID, SUBSTRING(content, PATINDEX('%CTid%', content) + 5, PATINDEX('%[^0-9]%', SUBSTRING(content, PATINDEX('%CTid%', content) + 5, 12)) - 1) AS CTid       
FROM ARTICLES
WHERE content LIKE '%CTid%'
于 2012-11-02T15:31:09.103 に答える
0

SELECT PARSENAME(REPLACE(PARSENAME(REPLACE(yourSQLString、 "="、 "。")、2)、 "'"、 "。")、1)

これには、yourSQLStringが=の前に少なくとも1桁開始し、 'の後に少なくとも1桁終了する必要があります。

于 2012-11-02T12:31:38.460 に答える