读书人

substr有关问题

发布时间: 2012-10-18 13:46:55 作者: rapoo

substr问题
to_number(substr((sum(validcount) /
(sum(validcount) + sum(invalidcount))) * 100,
1,
4))
和to_number(substr((sum(validcount) /
(sum(validcount) + sum(invalidcount))) * 100,
0,
4)) 的区别,现在查出来的结果相同


[解决办法]
返回字符表达式、二进制表达式、文本表达式或图像表达式的一部分。有关可与该函数一起使用的有效 SQL Server 2005 数据类型的详细信息,请参阅数据类型 (Transact-SQL)。

Transact-SQL 语法约定

语法

SUBSTRING ( expression ,start , length )


备注
必须以字符数指定使用 ntext、char 或 varchar 数据类型的偏移量(start 和 length)。必须以字节数指定使用 text、image、binary 或 varbinary 等数据类型的偏移量。

注意:
兼容级别可能影响返回值。有关兼容级别的详细信息,请参阅 sp_dbcmptlevel (Transact-SQL)。



参数
expression

是字符串、二进制字符串、文本、图像、列或包含列的表达式。不要使用包含聚合函数的表达式。

start

指定子字符串开始位置的整数。start 可以为 bigint 类型。

length

一个正整数,指定要返回的 expression 的字符数或字节数。如果 length 为负,则会返回错误。length 可以是 bigint 类型。

注意:
因为 start 和 length 指定了字节数,所以对具有 DBCS 排序规则的 text 数据类型(如日本汉字)使用 SUBSTRING 时,可能会在结果的开始或结束位置导致字符拆分。此行为与 READTEXT 处理 DBCS 的方式一致。因此,我们建议您针对 DBCS 字符使用 ntext 而不是 text。我们建议的另一种备用方法是使用 varchar(max) 数据类型,因为它不会拆分 DBCS 排序规则的字符。

读书人网 >SQL Server

热点推荐