我有一个 Oracle 数据库,我在 SQL Developer 中运行查询
select C_VALUE from master where SECTION='val1' and KEY='val2'
我得到的结果如下:
E:\folder1\file1
该查询返回一个如上所述的文件夹路径。
现在实际的问题是,每当我从 VBScript ASP 项目运行查询时,我得到的值如下:
E:folder1file1
如果您注意到没有斜杠 ()。 我不知道为什么会发生这种情况。 我从 VBScript 代码运行的查询如下:
strSQL = ""
strSQL = strSQL & "SELECT C_VALUE"
strSQL = strSQL & " AS SelectedCol"
strSQL = strSQL & " FROM MASTER"
strSQL = strSQL & " WHERE SECTION = 'val1'"
strSQL = strSQL & " AND KEY='val2'"
set objRs = objDb.CreateDynaset(strSQL, 4)
result = objRs("SelectedCol")
此处,result
的值以 E:folder1file1
形式获取,不带斜杠。
谁能告诉我为什么会这样?
最佳答案
发生这种情况的原因是因为在 Oracle 中反斜杠 \
被用作 Escape Character 。这意味着它不只是被输出,它具有特殊含义(紧跟在反斜杠后面的字符被转义),然后被丢弃。
您可以通过转义字符来忽略转义字符 (\\
) 像这样;
SELECT REPLACE(C_VALUE, '\', '\\') AS SelectedCol
FROM MASTER
WHERE SECTION='val1' AND KEY='val2'
虽然你可以use RELACE()
to substitute the backslash for another character然后,这需要代码中的另一个步骤,再次用反斜杠替换替换的字符。当 SQL 可以为您处理并获得相同结果时,这似乎毫无意义。
关于sql - Select 查询的结果返回不带斜杠的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40988343/