Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 发生连接时将字符串转换为uniqueidentifier_Sql_Sql Server_Casting - Fatal编程技术网

Sql 发生连接时将字符串转换为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

我想创建一个存储过程,但我得到了一个错误,在一段时间后,我发现“ret_payrollcalculationInfo”包含xml列,并将BankGuid和BankBranchGuid存储为字符串,而不是uniqueidentifier,并且无法连接到它们的表

<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)