如何在SQL查询语句中使用文字反斜杠?

时间:2015-08-17 17:42:23

标签: sql ms-access-2013 backslash

EDIT2:对不起大家,问题解决了。我想尝试将数字与我的字符串连接起来。我忘了我在发布这里时简化了我的陈述,认为我的问题与反斜杠有关,而不是类型兼容性。你们是对的,我是个白痴。谢谢!

我正在使用Access 2013我的查询从SQL 10.0服务器中提取数据(使用传递)。

我试图在我的SQL查询中使用反斜杠,如下所示(***编辑:tbltask.jobnum是我数据库中的一个字符串):

SELECT [tblEstimator].[Name] + '\\20' + [tbltask].[JobNum] + ' JOBS\\' AS JobMidFilePath

但是当我运行查询时,我收到错误:

  

将varchar值'\\ 20'转换为数据类型smallint时转换失败。 (#245)

我不知道这意味着什么或为什么它试图将任何东西转换为smallint。

3 个答案:

答案 0 :(得分:2)

要复制您的问题,我们可以编写如下的查询:

declare @name varchar(50) = 'Test',
        @JobNum smallint = 12

select @name + '\\20' + @JobNum + ' JOBS\\'; 

这将返回相同的错误:

  

将varchar值'Test \ 20'转换为数据时转换失败   输入smallint。

但是如果你将smallint或数字字段转换为这样的字符串,错误就会消失:

declare @name varchar(50) = 'Test',
        @JobNum smallint = 12

select @name + '\\20' + cast(@JobNum as varchar(10)) + ' JOBS\\'

您的查询应如下所示:

SELECT [tblEstimator].[Name] + '\\20' + cast([tbltask].[JobNum] as varchar(10)) 
       + ' JOBS\\' AS JobMidFilePath

我不确定相当于MS-ACESS,但这可以解决您的问题。

答案 1 :(得分:1)

首先,你可以尝试转换/转换你的int,因为你的输出应该是字符串。如果单引号不起作用,您可以尝试使用double qoute(“)

SELECT [tblEstimator].[Name] + "\\20" + CAST([tbltask].[JobNum] as varchar(100)) + " JOBS\\" AS JobMidFilePath

答案 2 :(得分:1)

/*You can copy/paste directly into SQL, comments will be commented out ini SQL syntax
I would create a temp table to achieve this. */

USE whateverDB
GO

CREATE TABLE #toSelectFrom (
    Name VARCHAR (100) 
    ,JobNum TINYINT
    /*look at the schema, it'll tell you what the data type is in SQL tables, in the column folder [see image] (http://i.ytimg.com/vi/MKPtdjq3MzA/maxresdefault.jpg) - copy verbatim to your temp table columns */
    ,slashPathNumber VARCHAR (25)
    ,slashPathJobs VARCHAR (50)
)

INSERT INTO #toSelectFrom (Name, slashPathNumber, JobNum, slashPathJobs)
SELECT [tblEstimator].[Name], '\\\\20', [tbltask].[JobNum], ' JOBS\\' AS JobMidFilePath /*** FROM yourTableToSelectFrom -- you NEED THIS FOR VALID SQL! ***/ 

--Then just: 
SELECT * FROM #toSelectFrom;
-- OR Alternatively:
SELECT Name + slashPathNumber + JobNum + slashPathJobs AS JobMidFilePath FROM #toSelectFrom;

/*
If you use it a lot, just write the above select statement(s) into a view to select from more often. ;)
*/