Sql 发生连接时将字符串转换为uniqueidentifier
我想创建一个存储过程,但我得到了一个错误,在一段时间后,我发现“ret_payrollcalculationInfo”包含xml列,并将BankGuid和BankBranchGuid存储为字符串,而不是uniqueidentifier,并且无法连接到它们的表Sql 发生连接时将字符串转换为uniqueidentifier,sql,sql-server,casting,Sql,Sql Server,Casting,我想创建一个存储过程,但我得到了一个错误,在一段时间后,我发现“ret_payrollcalculationInfo”包含xml列,并将BankGuid和BankBranchGuid存储为字符串,而不是uniqueidentifier,并且无法连接到它们的表 <BankGuid>92434DE6-3D3C-43F1-A89E-869AE5456B07</BankGuid> <BankBranchGuid>00000000-0000-0000-0000-0000
<BankGuid>92434DE6-3D3C-43F1-A89E-869AE5456B07</BankGuid>
<BankBranchGuid>00000000-0000-0000-0000-000000000000</BankBranchGuid>
<PayrollItemGuid>482C44DD-ECFB-4B79-9118-86B681CC51C9</PayrollItemGuid>
<SalariedType>1</SalariedType>
92434DE6-3D3C-43F1-A89E-869AE5456B07
00000000-0000-0000-0000-000000000000
482C44DD-ECFB-4B79-9118-86B681CC51C9
1.
我想知道在发生内部连接时是否有方法强制转换uniqeidentifier。这里有一些代码
CREATE PROCEDURE [dbo].[ret_PayrollCalculations_GetCalculationSummaries]
(
@CalculationCommandGuid uniqueidentifier,
@OperationalUnitIDs varchar(512)
)
AS
DECLARE @UnitIds TABLE([ID] INT primary key)
IF ISNULL(@OperationalUnitIDs, '') <> ''
INSERT INTO @UnitIds SELECT Distinct [Column] FROM com_udfSplit(@OperationalUnitIDs, ',')
SELECT DISTINCT
calculaion.[PersonnelNo],
calculaion.[FullName],
calculaion.[Amount],
calcInfo.[AccountNo],
calcInfo.[SalariedType],
bank.[Title],
branch.[Title]
FROM
ret_PayrollCalculationCommands command INNER JOIN
ret_vwPayrollCalculations calculaion ON command.[Guid] = calculaion.[CalculationCommandGuid] INNER JOIN
ret_PayrollCalculationInfo calcInfo ON calculaion.[Guid] = calcInfo.[PayrollCalculationGuid] INNER JOIN
gen_Banks bank ON calcInfo.[BankGuid] = bank.[Guid] INNER JOIN
gen_Branches branch ON calcInfo.[BankBranchGuid] = branch.[Title]
WHERE
command.[Guid] = @CalculationCommandGuid
创建过程[dbo]。[ret\u PayrollCalculations\u GetCalculationSummaries]
(
@CalculationCommandGuid唯一标识符,
@操作单元ID varchar(512)
)
作为
声明@UnitID表([ID]INT主键)
如果为空(@operationalUnitId,“”)
插入到@UnitIds中,从com_udfSplit(@OperationalUnitIDs,,)中选择不同的[Column]
选择不同的
计算,
计算。[全名],
计算[金额],
[AccountNo],
calcInfo。[受薪类型],
银行[名称],
分支机构[名称]
从…起
ret_PayrollCalculationCommands命令内部联接
ret_vwPayrollCalculations Calculation ON命令。[Guid]=Calculation。[CalculationCommandGuid]内部联接
ret_PayrollCalculationInfo Calculation ON Calculation。[Guid]=Calculation。[PayrollCalculationGuid]内部联接
CANCINFO上的gen_bank银行。[BankGuid]=银行。[Guid]内部联接
gen_在calcInfo上分支分支机构。[BankBranchGuid]=分支机构。[标题]
哪里
命令。[Guid]=@CalculationCommandGuid
您只需将VARCHAR
值强制转换为唯一标识符
,例如:
CAST('482C44DD-ECFB-4B79-9118-86B681CC51C9' AS UNIQUEIDENTIFIER)
因此,您的JOIN
子句变成这样:
ON command.[Guid] = CAST(calculaion.[CalculationCommandGuid] AS UNIQUEIDENTIFIER)