日期:2014-05-18 浏览次数:20705 次
IF OBJECT_ID(N'tbTest') IS NOT NULL
DROP TABLE tbTest
GO
----创建测试表
CREATE TABLE tbTest(ID int,姓名 nvarchar(20),部门代码 nvarchar(10))
insert into tbTest
select 1,N'张三',N'1000' union all
select 2,N'李四',N'1001' union all
select 3,N'王五',N'2001' union all
select 4,N'赵六',N'2002' union all
select 5,N'赵七',N'A3001' /*该行含有字符,并非全数字*/
GO
----查询(该查询能正常执行)
SELECT * FROM tbTest WHERE isnumeric(部门代码) = 1 AND cast(部门代码 as float) > 1000
/*结果
ID 姓名 部门代码
----------- -------------------- ----------
2 李四 1001
3 王五 2001
4 赵六 2002
*/
GO
----!加入聚合索引
IF INDEXPROPERTY(object_id(N'tbTest'),N'IX_tbTest','IndexID') IS NOT NULL
DROP INDEX tbTest.IX_tbTest
GO
CREATE CLUSTERED INDEX IX_tbTest ON dbo.tbTest(ID)
GO
----查询(相同的查询代码,却因创建了聚合索引而抛出8114异常)
SELECT * FROM tbTest WHERE isnumeric(部门代码) = 1 AND cast(部门代码 as float) > 1000
/*结果
ID 姓名 部门代码
----------- -------------------- ----------
2 李四 1001
3 王五 2001
4 赵六 2002
服务器: 消息 8114,级别 16,状态 5,行 2
将数据类型 nvarchar 转换为 float 时出错。
*/
SELECT * FROM tbTest WHERE case when isnumeric(部门代码) = 1 then cast(部门代码 as float) else 0 end > 1000
------解决方案--------------------
这个和SQL 生成本地代码有关吧,and 是同步执行时回报错,我在mssql 2005 下没加索引页报错
------解决方案--------------------
在2005下,不加聚集索引也会出错
------解决方案--------------------
看看
------解决方案--------------------
05是报错,但不键unicode的nvarchar就不抱错
------解决方案--------------------
学习..
------解决方案--------------------
来学习
------解决方案--------------------
请问为什么unicode的列,sql会先convert(float)?
------解决方案--------------------
StmtText StmtId NodeId Parent PhysicalOp LogicalOp Argument DefinedValues EstimateRows EstimateIO EstimateCPU AvgRowSize TotalSubtreeCost OutputList Warnings Type Parallel EstimateExecutions
------------------------------------------------------------------------------------ ----------- ----------- ----------- ------------------------------ ------------------------------ --------------------------------------------------------- ---------------------------------------------- ------------------------ ------------------------ ------------------------ ----------- ------------------------ ---------------------------------------------- -------- ------------------------------ -------- -----------