如何获得字符串的中间部分?

时间:2012-01-09 22:56:13

标签: sql sql-server-2008-r2

我正在尝试从此varchar(512)列中获取日期:

CAM; Initial period payment ($3249.58) 01/01/2012 - 01/31/2012; INITIAL Pmt.

希望将值01/01/2012作为“开始日期”返回,将01/31/2012作为“结束日期”返回。

我正在阅读有关内容和parsename的内容,但我对sql很新,觉得我只是感到困惑。

1 个答案:

答案 0 :(得分:0)

不幸的是,SQL中的SUBSTRING操作总是很脆弱。假设您的所有候选字符串都具有相似的格式,这将是有用的。我确定你会通过一些试验和错误来改进它:

DECLARE @str varchar(1000) = 'CAM; Initial period payment ($3249.58) 01/01/2012 - 01/31/2012; INITIAL Pmt.'

SELECT
    CONVERT(date, SUBSTRING(@str, CHARINDEX(')', @str) + 2, 10)) StartDate,
    CONVERT(date, SUBSTRING(@str, CHARINDEX('-', @str, CHARINDEX(')', @str, 12)) + 2, 10)) EndDate

您可以使用实际表格中的选项替换@str变量的使用。