Oracle - 如何使用 q 在转义中使用函数

     2023-02-19     68

关键词:

【中文标题】Oracle - 如何使用 q 在转义中使用函数【英文标题】:Oracle - How to use a function inside an escape with q 【发布时间】:2021-12-19 11:30:23 【问题描述】:

我知道我可以在这样的语句中转义字符串:

select 'That''s a really funny ''joke''' from dual; --returns: That's a really funny 'joke'

或者像这样:

select q'[That's a really funny 'joke']' from dual; --returns: That's a really funny 'joke'

两者都工作正常。

假设我需要在该 select 语句中准确地转义一个字符串,并且我还需要使用一个函数。

select q'[myfunction(somestringvariable)]' from dual;

当然这只返回“myfunction(somestringvariable)”

如前所述,我需要对函数的结果进行转义(不能在函数内部进行,需要在这个 select 语句中进行转义)。

我可以在用“q”转义的字符串中以某种方式使用该函数吗?

谢谢!

【问题讨论】:

为什么?函数结果中的引号将被正确传递。只有在编写 SQL 文字时才需要费心。 在我需要进行选择的地方不允许使用单引号 - 所以如果函数返回带有单引号的文本,我需要转义它们。 不,你没有。列/结果值不需要转义。只有文字需要转义。 这个选择的结果被用在一个脚本中(假设我现在不能改变这个脚本)。如果脚本在选择结果中找到单引号,则会引发错误。 q'[somestringvariable]' 在脚本中工作正常,但在这种情况下,我还需要使用带有 somestringvariable 的函数 @Hurt: Edit 问题并提供一个minimal reproducible example 来演示实际 问题。这闻起来像 XY problem。 【参考方案1】:

在函数结果中使用双引号:

REPLACE(myfunction(somestringvariable), '''', '''''') 

【讨论】:

谢谢!这将获取函数的结果并将每个单引号替换为 2 个单引号,这些单引号在之后的选择中被正确转义。很抱歉,最初需要什么不清楚(只写了“假设我需要在该 select 语句中完全转义一个字符串”)。【参考方案2】:

Oracle 不支持模板文字。


只需使用:

SELECT myfunction(somestringvariable) FROM DUAL;

或者,如果函数没有返回字符串:

SELECT TO_CHAR(myfunction(somestringvariable)) FROM DUAL;

如果您想连接带引号的字符串文字和函数结果,请使用字符串连接。

SELECT q'[That's a really funny 'joke']'
       || myfunction(somestringvariable)
FROM   DUAL;

【讨论】:

在需要使用select的地方不允许使用单引号。如果函数返回带有单引号的文本,这将失败(因为单引号仍在函数的结果中)。我需要以某种方式在选择中转义函数的返回值。 @Hurt 您问题中的前两个示例有单引号。这些示例的输出与函数(或与函数连接的字符串)的输出没有区别;如果“需要在哪里使用选择”(这是您之前没有定义的,所以我们无法知道该要求)适用于您问题中的前两个示例,那么答案中的所有示例也应该有效。如果他们不这样做,那么您需要edit 提供完整的minimal reproducible example 以及ALL 问题的详细信息。 是的,我只是说“假设我需要在那个 select 语句中准确地转义一个字符串”——这不是很清楚,抱歉。我已经在另一条评论中得到了正确答案:***.com/questions/69852748/… 而且我还说“如前所述,我需要对函数的结果进行转义(不能在函数内部进行,需要在此 select 语句中进行转义)。”

如何使用 Q.js 在循环中执行异步函数

】如何使用Q.js在循环中执行异步函数【英文标题】:HowtoexecuteasynchronousfunctionsinaloopusingQ.js【发布时间】:2013-10-1704:50:46【问题描述】:我需要在循环中执行一个异步函数(使用不同的参数)。任何想法如何使用Node.js中的Q模块... 查看详情

如何在 JavaScript 函数中使用单引号(撇号)转义 JSON 值

】如何在JavaScript函数中使用单引号(撇号)转义JSON值【英文标题】:HowtoescapeJSONvalueswithSingleQuotes(apostrophe)withinJavaScriptfunction【发布时间】:2019-08-0911:15:50【问题描述】:当数据被传递(不与任何特殊字符混合)到JavaScript函数... 查看详情

如何使用 varray 在 oracle 函数中接收多个参数

】如何使用varray在oracle函数中接收多个参数【英文标题】:howtousevarraytorecievemultipleargumentsinoraclefunction【发布时间】:2016-08-0411:06:31【问题描述】:我想创建一个函数,它将在varray中接受多个参数并返回该varray的最大值,就像orac... 查看详情

如何在变量 Oracle 函数中使用部分查询

】如何在变量Oracle函数中使用部分查询【英文标题】:HowtousepartofaqueryinsideavariableOracleFunction【发布时间】:2016-07-1418:31:55【问题描述】:我正在尝试将查询的一部分用于变量,因为我有很多if来准备查询,但我没有使用过这样的... 查看详情

如何在 JSX 中使用转义字符

】如何在JSX中使用转义字符【英文标题】:howtouseescapecharactersinJSX【发布时间】:2018-07-0703:40:07【问题描述】:我想在我的React应用程序中使用一些转义字符,但我没有找到任何资源可以告诉我如何在我的应用程序中使用转义字... 查看详情

单引號转义符q’的使用

当字符串包括单引號时,能够使用转义符q’对单引號进行转义。q’后面的字符能够是:   !   []   {}   ()   <>前提是这些字符不会出如今兴许的SQL中。 样例1:直接使... 查看详情

如何在spring数据仓库nativeQuery中使用oracle NVL函数

】如何在spring数据仓库nativeQuery中使用oracleNVL函数【英文标题】:HowtouseoracleNVLfunctioninspringdatarepositorynativeQuery【发布时间】:2017-11-0615:56:53【问题描述】:我正在尝试在SpringDataRepository的nativeQuery中使用oracle的NVL函数。当我在progr... 查看详情

如何转义字符串以在 Boost Regex 中使用

】如何转义字符串以在BoostRegex中使用【英文标题】:HowtoescapeastringforuseinBoostRegex【发布时间】:2009-08-1003:25:50【问题描述】:我只是想了解正则表达式,我正在使用BoostRegex库。我需要使用包含特定URL的正则表达式,它会阻塞,... 查看详情

如何在 OOCalc 中使用 CONCATENATE 函数引用报价

】如何在OOCalc中使用CONCATENATE函数引用报价【英文标题】:HowtoquoteaquotewiththeCONCATENATEfunctioninOOCalc【发布时间】:2011-01-0921:26:46【问题描述】:在OOCalc中我想使用CONCATENATE函数为A列中的每个字符串添加引号。所以在单元格B1中我想... 查看详情

如何在 Oracle 11g 中正确使用 MEMBER OF 函数

】如何在Oracle11g中正确使用MEMBEROF函数【英文标题】:HowdoIproperlyusetheMEMBEROFfunctioninOracle11g【发布时间】:2015-12-0814:21:29【问题描述】:我有以下代码,每次执行它时,都会收到错误PLS-00306:调用“成员”时参数的数量或类型错... 查看详情

如何避免在 .where() 函数中使用 IF-Else 并使用内联 if 条件?

】如何避免在.where()函数中使用IF-Else并使用内联if条件?【英文标题】:HowtoavoidusingIF-Elseanduseinlineifconditioninsidethe.where()function?【发布时间】:2021-11-3002:12:08【问题描述】:q=q.Where(s=>!matchingRecords.Contains(s.Id)||(s.SecId!=null));但ma​... 查看详情

如何在 Oracle PL/SQL 函数中使用变量

】如何在OraclePL/SQL函数中使用变量【英文标题】:HowtousevariablesinOraclePL/SQLFunction【发布时间】:2015-08-0713:58:25【问题描述】:我很抱歉,因为这个问题似乎很简单。我有这个功能:CREATEORREPLACEFUNCTIONCosts_MK(VIEWNAMEINVARCHAR2,WHERE_CLAUSE... 查看详情

如何在 Oracle 的 where 子句中使用用户定义的函数?

】如何在Oracle的where子句中使用用户定义的函数?【英文标题】:HowtouseauserdefinedfunctioninwhereclauseinOracle?【发布时间】:2020-11-0914:57:40【问题描述】:我想做这样的事情:SELECTsubscriptionfromTENANTwheretenant_id=(selectGET_TENANTID(12345)astenant... 查看详情

如何在过程中使用返回 Oracle REF_CURSOR 的函数

】如何在过程中使用返回OracleREF_CURSOR的函数【英文标题】:HowtousefunctionreturningOracleREF_CURSORinaprocedure【发布时间】:2011-11-2215:46:40【问题描述】:我必须编写一个Oracle过程,它应该调用一个返回REF_CURSOR的Oracle函数。函数是这样... 查看详情

如何在 oracle sql 中再次使用 MAX 和 MIN 函数获取值?

】如何在oraclesql中再次使用MAX和MIN函数获取值?【英文标题】:howtogetvaluesusingagainMAXandMINfunctioninoraclesql?【发布时间】:2018-12-0307:41:51【问题描述】:我使用此SQL查询得到以下结果:SELECTCode,CASEWHENMAX(running)=MIN(running)THENMAX(running)E... 查看详情

如何在 oracle 中使用动态 sql 创建记录类型?

】如何在oracle中使用动态sql创建记录类型?【英文标题】:howtocreaterecordtypeusingdynamicsqlinoracle?【发布时间】:2017-07-1114:36:36【问题描述】:我有一个名为a的表,其中包含x列。createtableA(xvarchar2(4000));insertintoAvalues(\'selectp,q,rfromo\');... 查看详情

如何在 DSE Search json 查询中使用转义字符?

】如何在DSESearchjson查询中使用转义字符?【英文标题】:HowtouseescapecharacterinDSESearchjsonquery?【发布时间】:2018-02-0607:15:24【问题描述】:我第一次使用DSE搜索,我有一个如下表:CREATETABLEkeyspace1.table1(idbigint,is_dirboolean,dirtext,nametex... 查看详情

如何在kotlin中使用$字符串而不是转义符

如何在 kotlin 中使用 $ 字符串而不是转义符如果你需要在原始字符串中表示字面值 $ 字符(它不支持反斜杠转义),你可以用下列语法:例如,代码里需要使用字符串: $9.99,在Kotlin中就有点恶心了,得这么写前面的$符号得... 查看详情