2

我有一列的值以下列格式存储:

名称#URL

所有数据都与它一起存储,第二个 # 永远不会出现。

我有以下语句从该列中删除 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)

返回具有指定字符数的字符串的左侧部分。

对(事务处理 SQL)

返回具有指定字符数的字符串的右侧部分。

于 2012-10-30T04:21:34.160 回答