【发布时间】:2013-04-05 10:59:58
【问题描述】:
是否可以执行某种内联操作来删除正在检索的值的某个部分?例如,我有
SELECT VersionNumber, [Description],
FROM tblVersions
VersionNumber 的值可能是
编辑:发现整数可以是 1、25、100 等值。所以在这种情况下,CHARINDEX 和 LEFT 将不起作用。
1.1
1.55
10.01
10.99
99.1 (a)
50.17 Interim
我需要做的是在句号之后剪切所有内容(值类型为VARCHAR)。这是PIVOT 查询的一部分(见下文),因此实际的Select 语句是固定字符串的一部分。
SELECT
@cols = STUFF(( SELECT DISTINCT TOP 100 PERCENT '],[' + [Description]
FROM
GIIA.vQualScoringGrade
ORDER BY
'],[' + [Description]
FOR XML PATH('')), 1,2,'') + ']'
SET @query = N'SELECT VersionNumber, ' + @cols +
' FROM (SELECT VersionNumber, Description, Value, OrderBy FROM GIIA.vQualScoringGrade) p
PIVOT (SUM([Value]) for [Description] IN ( ' + @cols + ' )) AS pvt ORDER BY VersionNumber'
execute(@query)
【问题讨论】:
-
CHARINDEX 和 LEFT 函数就足够了。
-
isolating a sub-string in a string before a symbol in SQL Server 2008 的可能副本。如果句点仅在某些字符串中,则可以添加
CASE来处理:select case when charindex('.', VersionNumber) = 0 then VersionNumber else ...
标签: sql-server tsql