rt

解决方案 »

  1.   

    没有区别  不过用convert转换后可以加入显示方式
    比如 
    select convert(varchar,getdate(),110)--118是显示方式
    cast没有这种功能
      

  2.   

    相同之处:都是做数据类型转换的
    不同之处:convertk只是显示转换
         cast是强制转换
      

  3.   

    convert多了个时间转换格式,其它的都一样
      

  4.   

    主要是时间转换上,要用convert
    所以你就忘记cast把,反正convert所有地方都可以用
      

  5.   

    那请各位看一下如下两个存储过程有何区别,为什么第二个在Asp.net中调用没有任何问题而在java的JDBC中调用时ResultSet会返回空,JDBC只能使用第一个不包含CAST()函数的存储过程?----------------------NO.1--------------------------CREATE PROCEDURE spAll_ReturnRows
    (
     @SQL nVARCHAR(4000),--选择的SQL语句
     @Page int,--页号
     @RecsPerPage int,--返回记录数
     @ID VARCHAR(255),--主键
     @Sort VARCHAR(255)--排序字段,T9是表别名
    )
    ASdeclare @temp1 varchar(20)
    set @temp1=convert(varchar(20),@RecsPerPage)
    declare @temp2 varchar(20)
    set @temp2=convert(varchar(20),(@RecsPerPage*(@Page-1)))exec('select top '+@temp1+' * from ('+@SQL+')t where t.'+@ID+' not in (select top '+@temp2+' '+@ID+' from ('+@SQL+') t9 order by '+@Sort+') order by '+@Sort)
    GO-----------------------NO.2--------------------------CREATE PROCEDURE spAll_ReturnRows
    (
    @SQL nVARCHAR(4000),
    @Page int,
    @RecsPerPage int,
    @ID VARCHAR(255),
    @Sort VARCHAR(255)
    )
    ASDECLARE @Str nVARCHAR(4000)SET @Str='SELECT   TOP '+CAST(@RecsPerPage AS VARCHAR(20))+' * FROM ('+@SQL+') T WHERE T.'+@ID+' NOT IN 
    (SELECT   TOP '+CAST((@RecsPerPage*(@Page-1)) AS VARCHAR(20))+' '+@ID+' FROM ('+@SQL+') T9 ORDER BY '+@Sort+') ORDER BY '+@SortPRINT @StrEXEC sp_ExecuteSql @Str
    GO
      

  6.   

    convert一般用于日期和时间值,小数之间转换;
    cast一般用于小数转数值和字符型. 
      

  7.   

    使用 CONVERT:CONVERT (data_type[(length)], expression [, style])参数
    expression是任何有效的 Microsoft® SQL Server™ 表达式。有关更多信息,请参见表达式。 data_type目标系统所提供的数据类型,包括 bigint 和 sql_variant。不能使用用户定义的数据类型。有关可用的数据类型的更多信息,请参见数据类型。 lengthnchar、nvarchar、char、varchar、binary 或 varbinary 数据类型的可选参数。 style日期格式样式,借以将 datetime 或 smalldatetime 数据转换为字符数据(nchar、nvarchar、char、varchar、nchar 或 nvarchar 数据类型);或者字符串格式样式,借以将 float、real、money 或 smallmoney 数据转换为字符数据(nchar、nvarchar、char、varchar、nchar 或 nvarchar 数据类型)。SQL Server 支持使用科威特算法的阿拉伯样式中的数据格式。在表中,左侧的两列表示将 datetime 或 smalldatetime 转换为字符数据的 style 值。给 style 值加 100,可获得包括世纪数位的四位年份 (yyyy)。
    -----------------------------------
    使用 CAST:
    CAST ( expression AS data_type ) E 因为结果长度太短无法显示而返回错误。Microsoft SQL Server 仅保证往返转换(即,从原始数据类型进行转换后又返回原始数据类型)在各版本间产生相同值。下面的示例显示往返转换:DECLARE @myval decimal (5, 2)
    SET @myval = 193.57
    SELECT CAST(CAST(@myval AS varbinary(20)) AS decimal(10,5))
    -- Or, using CONVERT
    SELECT CONVERT(decimal(10,5), CONVERT(varbinary(20), @myval))例如,不要尝试构造 binary 值并将它们转换为数字数据类型分类的数据类型。SQL Server 并不保证 decimal 或 numeric 数据类型转换为 binary 的结果在 SQL Server 各版本间相同。下面的示例显示了由于太短而无法显示的结果表达式。USE pubs
    SELECT SUBSTRING(title, 1, 25) AS Title, CAST(ytd_sales AS char(2))
    FROM titles
    WHERE type = 'trad_cook'下面是结果集:Title                        
    ------------------------- -- 
    Onions, Leeks, and Garlic *  
    Fifty Years in Buckingham *  
    Sushi, Anyone?            *  
      

  8.   

    转换的方式相同,convert多了日期的转换,其它一样(除用法)
      

  9.   

    convert 多出时间转换功能,应该说比 cast更强大.
    但是有时用cast更方便.
      

  10.   

    ding  楼上的说的都够清楚了
      

  11.   

    相同之处:都是做数据类型转换的 
    不同之处:convertk只是显示转换 
         cast是强制转换
      

  12.   

    好像都差不多,convert多了一个时间格式
      

  13.   

    convert一般用于日期和时间值,小数之间转换;
    cast一般用于小数转数值和字符型.