计算列为PK

| 我有一个计算的列基于要用作PK的另一列。我以这种方式进行设置,但是在尝试创建外键时,它始终声称我的PK具有不同的数据类型长度。 PK设置如下:(right(\'000000 \'+ CONVERT(nvarchar,[CaseNumber],0),(6)))...不应表示它与另一个字段相同设置为nvarchar(50)? 我知道我可以删除所有关系并使用caseint字段(这是一个int(身份)字段),但我不想重新编码所有代码。     
已邀请:
没有。 该表达式的数据类型为
nvarchar(6)
,因此您需要将表达式强制转换为ѭ1avoid以避免抱怨长度不匹配。
   DECLARE @v SQL_VARIANT =RIGHT(\'000000\'+CONVERT([NVARCHAR](50),123,0),(6))

   SELECT    CAST(SQL_VARIANT_PROPERTY(@v, \'BaseType\') AS VARCHAR(30)) AS BaseType,   
             CAST(SQL_VARIANT_PROPERTY(@v, \'MaxLength\') AS INT) AS MaxLength 
退货
BaseType                       MaxLength
------------------------------ -----------
nvarchar                       12
尽管这是字节大小,所以将12除以2得到Unicode字符数。     

要回复问题请先登录注册