SQL加入字符串引用外部文件的路径

问题描述:

我试图加入一些字符串来定义一个路径 - 例如,给出$(name)=“PATH”,我想要:r .\PathOne\PATH.sql。由于Syntax Error,查询在第一个:r失败。如果我硬编码路径,并且在条件中保留$(name),它将按预期工作。这只是由于某种原因失败的路径的字符串结构。SQL加入字符串引用外部文件的路径

IF '$(name)' LIKE 'TEST%' 
BEGIN 
    :r .\PathOne\'$(name)'.sql 
END 
IF '$(name)' NOT LIKE 'TEST%' 
BEGIN 
    :r .\PathTwo\'$(name)'.sql 
END 

我如何去在SQL路径将字符串连接?命名文件直接起作用。

+1

你确定你的查询窗口设置为SQLCMD模式?你是什​​么定义了名称变量? –

+0

请提供所需的结果和您得到的结果 – FLICKER

+0

@AaronBertrand是的 - 这是定义和工作在其他地方,只是不在字符串结构。 – RobVious

附上路径的双引号内的硬编码的零件和您的变量,而旁边的构建路径硬编码部分的任何空间,例如

:setvar filename "test" 
:setvar root "D:\temp" 
:r $(root)"\test\"$(filename)".sql" 

将导致路径一样

d:\ TEMP \测试\ TEST.SQL

至R esolve您的问题尝试这样的事情

:r ".\PathOne\"$(name)".sql" 

希望这有助于

我知道它可能听起来不直观,但可以尝试将路径放在双引号中,如下所示。这适用于我的机器。如果没有双引号,我会和你一样失败。

:setvar name "test" 

if '$(name)' like 'test%' 
begin 
    :r "c:\temp\test1\"$(name).sql 
end 
else if '$(name)' not like 'test%' 
begin 
    :r "c:\temp\test2\"$(name).sql 
end