📜  SQL |另类报价运算符

📅  最后修改于: 2022-05-13 01:54:52.225000             🧑  作者: Mango

SQL |另类报价运算符

这篇文章是 SQL 连接运算符的延续。

现在,假设我们想在字面量值中使用撇号,但我们不能直接使用它。

请参阅不正确的代码:
选择 id、first_name、last_name、salary、
名字||'有薪水'||薪水
作为“新”从一个

所以上面我们得到了错误,因为Oracle服务器认为第一个撇号开始字面量第二个撇号结束字面量,那么第三个撇号呢???。这就是我们得到错误的原因。

替代报价运算符( q


为了克服上述问题,Oracle 引入了一种称为替代报价运算符( q) 的运算符。

让我们看一个例子:

Query that uses Alternative Quote Operator(q)
SELECT id, first_name, last_name, salary,
first_name||q'{ has salary's }'||salary 
AS "new" FROM myTable
Output:
See, we are able to use apostrophe in the
new column as a literal value of myTable 

ID  FIRST_NAME LAST_NAME  SALARY            new
3    Shane     Watson     50000    Shane has salary's 50000
1    Rajat     Rawat      10000    Rajat has salary's 10000
2    Geeks     ForGeeks   20000    Geeks has salary's 20000
3    MS        Dhoni      90000    MS    has salary's 90000

在上面看到, q'{表示我们的字面量值的开始,然后我们使用}'表示我们的字面量值的结束。所以看到这里我们很容易在我们的字面量值中使用撇号(意味着我们很容易在薪水中使用's )没有任何错误,这就是为什么我们得到输出,因为 Rajat 的薪水50000。

因此,要在字面量中使用撇号,我们首先需要使用q ,它被称为替代引号运算符,然后我们需要使用撇号' ,然后我们需要使用分隔符,在分隔符之后我们写下我们的字面量值,当我们完成编写我们的字面量值然后我们需要关闭我们之前和之后打开的分隔符,我们需要再次放置一个撇号,因此我们可以在我们的字面量值中使用撇号。这个概念被称为替代报价运算符(q)。

我们可以使用任何字符,例如{<([!或任何字符作为分隔符。这些字符被称为分隔符

1 另一个例子

不使用引用运算符

Here we get Error since we are using apostrophe in our literal value directly.

Error code below:
SELECT id, name, dept, name||' work's in '||dept||'
 department' AS "work" FROM myTable2

使用引用运算符
SELECT id, name, dept, name||q'[ work's in ']'||dept||'
部门的“工作”来自 myTable2

Output:
See, we are able to use apostrophe in the 
work column as a literal value of myTable2 

ID NAME      DEPT           work
1  RR       Executive  RR work's in 'Executive department
2  GFG      HR         GFG work's in 'HR department
3  Steve    Sales      Steve work's in 'Sales department
4  Bhuvi    CSE        Bhuvi work's in 'CSE department

在上面看到, q'[表示我们的字面量值的开始,我们使用]'表示我们的字面量值的结束。所以看到这里我们很容易在我们的字面量值中使用了撇号(意味着我们很容易在工作中使用's )没有任何错误,这就是为什么我们在执行部门得到输出为 RR work's 。]

上面我们使用[作为分隔符,所以它不是使用分隔符的限制意味着我们可以使用任何字符作为分隔符。

参考:
关于替代报价运营商,
在线执行 SQL 查询