首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从select查询存储过程将nvarchar转换为int数据类型

从select查询存储过程将nvarchar转换为int数据类型
EN

Stack Overflow用户
提问于 2017-10-30 13:28:13
回答 1查看 549关注 0票数 0

在使用存储过程将nvarchar数据类型从select查询转换为Integer数据类型并将其插入我的数据库时,我遇到了这个问题;

我已经在互联网上搜索了很多次如何解决我的问题,但是,我发现的密码无法解决我的问题。

这是我的密码

代码语言:javascript
运行
复制
USE [SLCBRegistrarDB]
 GO
 /****** Object:  StoredProcedure [dbo].[CountLabfees]    Script Date: 
 10/30/2017 7:06:43 PM ******/
 SET ANSI_NULLS ON
 GO
 SET QUOTED_IDENTIFIER ON
 GO
 ALTER Procedure [dbo].[CountLabfees]
 @LabSubject nvarchar(50)

 as

 BEGIN
 SET NOCOUNT ON;
 Declare @SQL NVARCHAr(MAX)
 SET @LabSubject = REPLACE(@LabSubject,',',''',''')
 SET @SQL='SELECT Distinct(TESTFeeSETUP.[Fee Code])
 FROM TESTFeeSETUP INNER JOIN TESTFeeSETUPSubTable ON TESTFeeSETUP.[Fee 
 Specification] = TESTFeeSETUPSubTable.[Specification ID]
 WHERE TESTFeeSETUPSubTable.Specification in (''' + @LabSubject + ''')'

 Declare @Quantity NVARCHAr(MAX)
 SET @Quantity='SELECT Count(FEESList.[Fee Description]) AS Quantity
 FROM FEESList INNER JOIN TESTFeeSETUP ON FEESList.FeeID = 
 TESTFeeSETUP.FeeID INNER JOIN TESTFeeSETUPSubTable ON TESTFeeSETUP.[Fee 
 Specification] = TESTFeeSETUPSubTable.[Specification ID]
 WHERE TESTFeeSETUPSubTable.Specification in (''' + @LabSubject + ''')'

 Declare @Total NVARCHAr(MAX)
 SET @Total='SELECT Distinct(TESTFeeSETUP.[Amount/Cost])
 FROM TESTFeeSETUP INNER JOIN TESTFeeSETUPSubTable ON TESTFeeSETUP.[Fee 
 Specification] = TESTFeeSETUPSubTable.[Specification ID]
 WHERE TESTFeeSETUPSubTable.Specification in (''' + @LabSubject + ''')'

 EXEC (@SQL)
 EXEC (@Total)
 EXEC (@Quantity)
 END
 BEGIN
    INSERT INTO FeesStudentBILLING VALUES(10,@SQL,@Quantity,@Total,1,1)
 END

每次我执行代码时,都会出现这个错误,

“无法将nvarchar数据类型的选择计数(FEESList.Fee Description)从FEESList内连接的数量转换为FEESList.FeeID = TESTFeeSETUP.FeeID内连接的FEESList.FeeID=TESTFeeSETUP.FeeID内部连接TESTFeeSETUPSubTable ON TESTFeeSETUP.Fee = TESTFeeSETUPSubTable.Specification ID,其中TESTFeeSETUPSubTable.Specification在(‘+ @LabSubject +’)中转换为整数数据类型”

我对编程很陌生,所以我真的需要一些帮助。谢谢

EN

Stack Overflow用户

发布于 2017-10-30 14:03:29

如果你做这样的事情,对你来说就容易多了:

  1. 使用拆分字符串函数从@LabSubject获取值,然后将它们存储在局部变量表中。
  2. 在条件查询中使用步骤1中的局部变量表。

,例如( Server 2016)

代码语言:javascript
运行
复制
    DECLARE @LabSubjectTable TABLE(Value NVARCHAR(50))

        INSERT INTO @LabSubjectTable 
        SELECT value FROM STRING_SPLIT(@LabSubject, ',')


         SELECT Distinct(TESTFeeSETUP.[Fee Code]) AS FeeCode
FROM TESTFeeSETUP AS t1
INNER JOIN TESTFeeSETUPSubTable ON TESTFeeSETUP.[Fee Specification] = TESTFeeSETUPSubTable.[Specification ID]
WHERE TESTFeeSETUPSubTable.Specification in (SELECT value FROM @LabSubjectTable)


 SELECT Count(FEESList.[Fee Description]) AS Quantity
 FROM FEESList INNER JOIN TESTFeeSETUP ON FEESList.FeeID = TESTFeeSETUP.FeeID 
 INNER JOIN TESTFeeSETUPSubTable ON TESTFeeSETUP.[Fee Specification] = TESTFeeSETUPSubTable.[Specification ID]
 WHERE TESTFeeSETUPSubTable.Specification in (SELECT value FROM @LabSubjectTable)


 SELECT Distinct(TESTFeeSETUP.[Amount/Cost]) AS AmountCost
 FROM TESTFeeSETUP INNER JOIN TESTFeeSETUPSubTable ON TESTFeeSETUP.[Fee Specification] = TESTFeeSETUPSubTable.[Specification ID]
 WHERE TESTFeeSETUPSubTable.Specification in (SELECT value FROM @LabSubjectTable)

更新:

  • 我想你现在能想到办法了。基于此,您可以根据您的逻辑进行更新。
  • 如果Server不支持内置的拆分字符串函数,则可以创建一个T-SQL split string
票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47016483

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档