苏飞论坛

标题: [2013-01-24][成都]看看路过]Sql中varchar转化为numeric时出错 [打印本页]

作者: 站长苏飞    时间: 2013-1-24 14:54
标题: [2013-01-24][成都]看看路过]Sql中varchar转化为numeric时出错
[成都]看看路过 14:45:29
在过程中我定义了一个decimal的变量,但我使用变量来组成一个sql语句的时间报varchar 转化为numeric的错
[郑州] 站长苏飞<sufei.1013@163.com>  14:47:27
有字符串时都要转成字符串,因为Varchar+decimal会转成decimal类型,页不是Varchar类型,这正好和C#相返,在要Sql中Varchar的优化级应该是最低的,所以他和其它类型数据+都会转成相应的其它数据类型
[重庆]版主-Eagle14:48:07
up
群里的都是大神
尤其是叫这个名字的:[郑州] 站长苏飞
[成都]看看路过 14:49:11
也就是使用时必须要转化一次
[郑州] 站长苏飞<sufei.1013@163.com>  14:49:38
恩,你应该使用的是字符串对接吧,
是要转化
[成都]看看路过 14:50:05
恩想,谢了
[郑州] 站长苏飞<sufei.1013@163.com>  14:51:46
' and id='+CONVERT(VARCHAR,@id)  非字符类转化,
与字符类转化'and typename like''%'+string+'%'''
参考下
[成都]看看路过 14:52:47
以前没写过,还以为Sql要自动转化的呢
[郑州] 站长苏飞<sufei.1013@163.com>  14:53:34
这个需要手动,对接Sql也是一种学问,呵呵


[成都]看看路过14:54:43

之前测试的select 2-‘1’得到1还以为很自动的
[郑州] 站长苏飞<sufei.1013@163.com> 14:55:39

这个也是把1’转成了1,如果你再加个别的字符就有问题了,


作者: 站长苏飞    时间: 2013-1-24 15:08
给大家一现成的例子
[code=sql]set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go

ALTER PROCEDURE [dbo].[sp_select_icontype]
@id INT,
@typename NVARCHAR(20),
@filename NVARCHAR(20),
@CurrentPage int =1,
@PageSize int =10
AS
BEGIN
                declare @strFields nvarchar(500);
                declare @strWhere nvarchar(4000);
               
                --查找的字段
                SET @strFields='id,typename,filename,width,height';
                --条件
                SET @strWhere='1=1'
               
                IF (@id<>-1)  --id
                BEGIN
                        SET @strWhere=@strWhere+'and id='+CONVERT(VARCHAR,@id)
                END
                IF (@typename<>'-1')  --类型名称
                BEGIN
                        SET @strWhere=@strWhere+'and typename like''%'+@typename+'%'''
                END
                IF (@filename<>'-1')  --文件夹名称
                BEGIN
                        SET @strWhere=@strWhere+'and filename like''%'+@filename+'%'''
                END

EXEC ('select '+@strFields+' from table '+@strWhere)
                       
END

[/code]
作者: 幻雪丶逆时光    时间: 2013-1-24 15:12
例子 收下  嘿嘿
作者: Eagle    时间: 2013-1-24 17:20
<script>alert('asdf');</script>
作者: 站长苏飞    时间: 2013-1-24 17:26
Eagle 发表于 2013-1-24 17:20
alert('asdf');

你发这个是什么意思
作者: Eagle    时间: 2013-1-26 18:38
admin 发表于 2013-1-24 17:26
你发这个是什么意思

在搞东西,看到出了个好帖子,就直接把复制的东西粘贴了
作者: 站长苏飞    时间: 2013-1-26 18:39
Eagle 发表于 2013-1-26 18:38
在搞东西,看到出了个好帖子,就直接把复制的东西粘贴了

呵呵,当记事本了




欢迎光临 苏飞论坛 (http://www.sufeinet.com/) Powered by Discuz! X3.4