【问题标题】:How to declare UserId to add to new table如何声明 UserId 以添加到新表
【发布时间】:2015-09-17 06:53:47
【问题描述】:

我想在 sqlserver 中检查查询,但出现错误Conversion failed when converting from a character string to uniqueidentifier.

Declare @UserId nVarchar='3847609f-6fd1-4a14-9675-000d74a5df80'
Declare @PersonId int=936;
INSERT INTO [dbo].[Users_Emps] ([UserId],[EmpId]) (SELECT distinct      
CONVERT(UNIQUEIDENTIFIER,@UserId),Employee.EmpId FROM Employee 
inner join Users_Emps ON Employee.EmpId = Users_Emps.EmpId where 
PersonId=@PersonId)

我从后面的代码中获取参数

 DsUsers_Emps.InsertParameters["UserId"].DefaultValue =
 Membership.GetUser(UserName.Text).ProviderUserKey.ToString();
    DsUsers_Emps.InsertParameters["PersonId"].DefaultValue=PersonsDropDownList.SelectedValue;
    DsUsers_Emps.Insert();

【问题讨论】:

    标签: c# asp.net sql-server database


    【解决方案1】:

    始终指定大小:

    Declare @UserId NVARCHAR(100)='3847609f-6fd1-4a14-9675-000d74a5df80';
    
    SELECT CAST(@UserId AS UNIQUEIDENTIFIER);
    

    使用:

    Declare @UserId NVARCHAR;
    
    /* Is the same as */
    
    Declare @UserId NVARCHAR(1);
    

    还有你的@UserId = '3'

    【讨论】:

      【解决方案2】:
      Declare @UserId nVarchar='3847609f-6fd1-4a14-9675-000d74a5df80'
      

      在上面的代码 sn-p 中,您已将变量 @UserID 声明为 nVarchar,这里您没有提及任何长度,默认情况下它是 1。因此,如果执行以下语句,它将返回3,而不是'3847609f-6fd1-4a14-9675-000d74a5df80'

      Select @UserId as 'UserID'
      

      现在,您正在尝试将@UserID 转换为UNIQUEIDENTIFIER。对于转换,我们需要格式为

      的字符串

      xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

      但是由

      生成
      Declare @UserId nVarchar='3847609f-6fd1-4a14-9675-000d74a5df80' 
      

      是 x。因此,转换失败。

      @lad2025 所述,指定大小为 50、100 或 255。为您的 nVarchar 数据类型指定一个固定长度。

       Declare @UserId nVarchar(50)='3847609f-6fd1-4a14-9675-000d74a5df80' 
      

      Declare @UserId nVarchar(255)='3847609f-6fd1-4a14-9675-000d74a5df80'
      

      它现在可以工作了。

      参考: nVarchar vs nVarchar(n)UniqueIdentifier

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-01-07
        • 1970-01-01
        • 2019-11-26
        • 1970-01-01
        • 2022-01-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多