SQL Server 2008 SELECT连接和特定字符的LEFT

时间:2013-04-12 15:18:08

标签: sql sql-server sql-server-2008

我有以下代码将一系列文本连接到一个字段。此查询中的每次匹配都包含^之后的数据。我只想显示^的每个LEFT,而不是^本身。这可能吗?

这是我的代码......

SELECT Cast(Cast(((SELECT *
   FROM   (SELECT(SELECT cddesc + ' ' AS [text()]
   FROM   costdesc
      WHERE  costdesc.cindex = c.cindex
      ORDER  BY cdline
      FOR xml path('')) AS cddesc) cddesc)) AS
   NVARCHAR(max)) AS NTEXT) AS cddesc

FROM Table
WHERE Blah blah

非常感谢任何帮助。

-Nick

2 个答案:

答案 0 :(得分:0)

不确定您的每个cddesc'^something'还是'something^' ......

删除第一个或最后一个字符的方法:

select substring('abcdef',2,8000) = 'bcdef'
select substring('abcdef',1,len('abcdef')-1) = 'abcde'

或者如果它在中间

select substring('ab^cd',CharIndex('^', 'ab^cd')+1,8000) = 'cd'
select substring('ab^cd',1,CharIndex('^', 'ab^cd')-1) = 'ab'

答案 1 :(得分:0)

这样的事情?

DECLARE @TestString VARCHAR(100) = 'This is ^a test';

-- get everything to the left of ^   
SELECT SUBSTRING(@TestString,1,CHARINDEX('^', @TestString)-1);

-- get everything to the right of ^ 
SELECT SUBSTRING(@TestString,CHARINDEX('^', @TestString)+1,LEN(@TestSTring));  

导致:

This is

a test