删除部分
SELECT
right(name,7),
substring(params, charindex('|-|', params)+3,LEN(params)) as 'List Name',
convert(varchar,dateadd(hh,-8,created_date), 101) as Date,
convert(char, dateadd(hh,-8,created_date), 108) as Time
FROM
[meldb].[dbo].[mr_message]
WHERE
name in ('CL_LIST_STARTED', 'CL_LIST_STOPPED')
AND dateadd(hh,-8,created_date) > '7/1/2014'
ORDER BY
created_date ASC
列表名称将返回类似:删除部分
firstname.lastname-|LISTNAME|-|PARENTLISTNAME
我想LISTNAME
和PARENTLISTNAME
隔离在单独的列,但由于它们可以在煤焦大小不等我可以”牛逼只需指定向左或向右
顺便说一句我没有创建使用它
任何想法,这个表我只是坚持?
你试过了吗?
好......高兴周五:)
declare @str varchar(100);
set @str = 'jim.smith|-|firstItem|-|secondItem';
--- for your query, change @str to the column name, obviously ---
select
substring(
@str
, charindex('|-|', @str) + 3
, ((charindex('|-|', @str, charindex('|-|', @str) + 3)) - (charindex('|-|', @str) + 3))
)
,substring(
@str
, charindex('|-|', @str, charindex('|-|', @str) + 3) + 3
, len(@str) -- guaranteed to be past the end, to catch all
)
不得不关闭第二个子字符串,但它应该工作:) – lookslikeanevo
哦,它在那里:)我喜欢比大多数人更多的线条...祝你周末愉快 –
Mike!谢谢,我不包括第二个charindex,它让我疯狂!非常感激! – lookslikeanevo
是否要将params
分为三列?请检查以下查询。
SELECT
SUBSTRING(params, 1, CHARINDEX('-', params)-1) AS FullName,
SUBSTRING(STUFF(params, CHARINDEX('|-|', params), LEN(params), ''), CHARINDEX('-', params) + 2, LEN(params)) AS 'List Name',
SUBSTRING(params, CHARINDEX('|-|', params) + 3, LEN(params)) AS 'Parent List Name',
CONVERT(VARCHAR,DATEADD(hh,-8,created_date), 101) AS DATE,
CONVERT(CHAR, DATEADD(hh,-8,created_date), 108) AS TIME
FROM
[meldb].[dbo].[mr_message]
WHERE
name IN ('CL_LIST_STARTED', 'CL_LIST_STOPPED')
AND DATEADD(hh,-8,created_date) > '7/1/2014'
ORDER BY
created_date ASC
关闭,但重新构建了以下三个列: 富勒名 - 第一。last list name - LISTNAME | - | PARENTLISTNAME(partial) 父列表名 - 列表名| - | PARENTLISTNAME(完整) – lookslikeanevo
三列。 – Jesuraja
您是否可以更新问题中的确切示例输入和期望输出? – Jesuraja
这里是我想出了使用PAT索引的格式和你提到的分隔符:
SELECT name,
substring(name, 0, charindex('.', name)) as 'FirstName',
substring(name, charindex('.', name) + 1, patindex('%|-|%', name) - patindex('%-|%', name) -2) as 'LastName',
substring(name,patindex('%-|%', name)+2, patindex('%|-|%', name) - patindex('%-|%', name)-2) as 'ListName',
substring(name, patindex('%|-|%', name)+3, len(name) - patindex('%|-|%', name)) as 'ParentListName'
from FancyNames
链接到SQL小提琴:http://sqlfiddle.com/#!6/03c2c/38
SQL Server,对吗? – Barranka
哪个数据库? –
sql服务器,对不起忘了指定 – lookslikeanevo