如何根据CharIndex为表中字段的起点和终点返回子字符串?

时间:2012-03-22 18:08:14

标签: sql sql-server

我早上大部分时间都在研究这个问题,我认为我主要有解决方案,但我必须在某处出错。

我有一个表,它将列保存为一个长html文件。

我需要搜索该列并在mssql中返回该html文件的一部分,但我没有要使用的索引号。

到目前为止我的查询:

SELECT SUBSTRING(ColName, CHARINDEX('TxTStart', ColName), CHARINDEX('TxTEnd', ColName))
FROM htmlTable ht
WHERE ht.Date_ = '2009-01-01'

我的想法是,从txtStart到TxtEnd获取整个子字符串时,此查询的长度不正确。

我是否应该使用RTRIM,只需取出所有字符串,然后切断我需要的内容? 如果以上实际工作,我只是有其他错误吗?

或者我完全不在这里?

提前感谢任何帮助或提示。

1 个答案:

答案 0 :(得分:4)

第3个参数是长度,因此您需要减去结束并开始获取长度。试试这个

SELECT SUBSTRING(ColName, CHARINDEX('TxTStart', ColName), CHARINDEX('TxTEnd', ColName) - CHARINDEX('TxTStart', ColName))
FROM htmlTable ht
WHERE ht.Date_ = '2009-01-01'