sql - Select 查询的结果返回不带斜杠的值

标签 sql oracle vbscript asp-classic

我有一个 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/

相关文章:

java - 如何查看Oracle中的JDK版本?

oracle - 在 Oracle DB 上运行时是否可以更改查询的并行度?

sql-server - 用于读取文本文件并执行查询的 VB 脚本

sql - 如何使用 CASE/IF (SQL 查询)检查列中的子字符串

mysql - 在 SQL 查询中从 CURTIME() 选择分钟

UNION查询的Mysql错误

mysql - 如果已存在具有相同值的行,则增加一列

oracle - 计算 oracle varchar 列值中给定符号后的字符数

c# - 如何在 Blueprism 中指定列名和数据项?

windows - 确定打开给定文件扩展名的默认程序 - VBS