【问题标题】:Error in select query merge选择查询合并错误
【发布时间】:2015-06-26 15:23:04
【问题描述】:

我试图在选择查询的一列中合并三个值,除了getdate 函数,查询工作正常,但是当我写getdate() 时它给出了错误:

将 varchar 值“FA/118”转换为数据时转换失败 输入int

这是引发错误的查询:

select top 1 ([Casetype] +'/'+ CaseNo +','+ YEAR(GETDATE()) )as CaseNo
from tbl_RecordRequisition
where Casetype='FA'
order by id desc

请帮忙!

【问题讨论】:

    标签: sql sql-server


    【解决方案1】:

    您必须将 YEAR(GETDATE())) 的值转换为字符串:

    select top 1 ([Casetype] +'/'+ CaseNo +','+ CONVERT(varchar,YEAR(GETDATE())) )as CaseNo from tbl_RecordRequisition where Casetype='FA' order by id desc
    

    否则 sql-server 会尝试将表达式 ([Casetype] +'/'+ CaseNo +',' 的值转换为 int。

    【讨论】:

    • 在 MS SQL Server 中运行此查询以验证它是否正常工作:选择 'FA/118,' + CONVERT(varchar,YEAR(GETDATE())) AS CaseNo
    • @SimplyInk 已经在 sqlfiddle 中完成了,它按预期工作。
    【解决方案2】:

    您需要连接 varcharYEAR() 返回 int

    select top 1 
        ([Casetype] +'/'+ CaseNo +','+ CONVERT(char(4), YEAR(GETDATE()))) as CaseNo 
    from tbl_RecordRequisition 
    where Casetype='FA' 
    order by id desc
    

    【讨论】:

      【解决方案3】:

      试试这个查询

      select top 1 ([Casetype] +'/'+ convert(varchar(50),CaseNo) +','+ convert(varchar(50),YEAR(GETDATE())) )as CaseNo from tbl_RecordRequisition where Casetype='FA' order by id desc
      

      【讨论】:

        猜你喜欢
        • 2023-04-09
        • 2016-01-14
        • 1970-01-01
        • 1970-01-01
        • 2012-03-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多