2

次の形式で値が格納されている列があります。

名前#URL

すべてのデータはこれで保存され、2 番目の # は存在しません。

この列から URL を削除する次のステートメントがあります。

SELECT  SUBSTRING ( wf_name ,PATINDEX ( '%#%' , wf_name )+1 , LEN(wf_name)-(PATINDEX ( '%#%' , wf_name )) )

ただし、名前も取りたいです(#の残りすべて)。残念ながら、私は上記で使用している関数を理解していません (ドキュメントを読んでもまだ混乱しています)。誰かがフローを理解し、これを調整して#の残りをすべて取得する方法を教えてください。

4

1 に答える 1

3

次の例を見てください。

; WITH Table1 AS (
    SELECT  'TADA#TEST' AS NameURL
)
SELECT  *,
        LEFT(NameURL,PATINDEX('%#%',NameURL) - 1) LeftText,
        RIGHT(NameURL,PATINDEX('%#%',NameURL)- 1) RightText
FROM    Table1

SQL フィドルのデモ

関数の使用

PATINDEX (Transact-SQL)

すべての有効なテキストおよび文字データ型について、指定された式でパターンが最初に出現する開始位置を返します。パターンが見つからない場合はゼロを返します。

左 (Transact-SQL)

指定された文字数の文字列の左側部分を返します。

右 (Transact-SQL)

指定された文字数の文字列の右側部分を返します。

于 2012-10-30T04:21:34.160 に答える