• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

第116章 SQL函数 REPLACE

武飞扬头像
学无为
帮助1

文章目录

第116章 SQL函数 REPLACE

字符串函数,用于替换字符串中的子字符串。

大纲

REPLACE(string,oldsubstring,newsubstring)

参数

  • string - 作为子字符串搜索目标的字符串表达式。
  • oldsubstring - 字符串中要匹配的子字符串。
  • newsubstring - 用于替换oldsubstring 的子字符串。

描述

REPLACE 在字符串中搜索子字符串并替换所有匹配项。匹配区分大小写。如果找到匹配项,它将用 newsubstring 替换 oldsubstring 的每个实例。替换子串可能比它替换的子串长或短。如果找不到子字符串,则 REPLACE 将原样返回原字符串。

无论字符串的数据类型如何,REPLACE 返回的值始终是数据类型 VARCHAR。这允许替换操作,例如 REPLACE(12.3,'.','_')

REPLACE 不能对字符串、oldsubstringnewsubstring 参数使用 %Stream.GlobalCharacter 字段。尝试这样做会生成 SQLCODE -37 错误。

空字符串是字符串值。因此,可以将空字符串用于任何参数值。但是,请注意 ObjectScript 空字符串作为 NULL 传递给 SQL

NULL 不是 SQL 中的数据值。因此,为任何 REPLACE 参数指定 NULL 将返回 NULL,无论是否发生匹配。

此函数提供与 Transact-SQL 实现的兼容性。

REPLACE, STUFF, and $TRANSLATE

REPLACESTUFF 都执行子字符串替换。 REPLACE 按数据值搜索子字符串。 STUFF 按字符串位置和长度搜索子字符串。

REPLACE 执行单个字符串对字符串的匹配和替换。 $TRANSLATE 执行逐字符匹配和替换;它可以用相应的指定替换单个字符替换一个或多个指定单个字符的所有实例。它还可以从字符串中删除一个或多个指定单个字符的所有实例。

默认情况下,所有三个函数都区分大小写并替换所有匹配的实例。

示例

以下示例搜索子字符串“P”的每个实例并将其替换为子字符串“K”

SELECT REPLACE('PING PONG','P','K')

KING KONG

以下嵌入式 SQL 示例搜索子字符串“KANSAS”的每个实例,并将其替换为子字符串“NEBRASKA”

/// d ##class(PHA.TEST.SQLFunction).Replace()
ClassMethod Replace()
{
  s str = "KANSAS, ARKANSAS, NEBRASKA"
  &sql(
    SELECT REPLACE(:str,'KANSAS','NEBRASKA') INTO :x
  )
  w !,"SQLCODE=",SQLCODE
  w !,"Output string=",x
}
DHC-APP>d ##class(PHA.TEST.SQLFunction).Replace()
SQLCODE=0
Output string=NEBRASKA, ARNEBRASKA, NEBRASKA

以下示例显示 REPLACE 处理空字符串 ('') 就像处理任何其他字符串值一样:

SELECT REPLACE('','','Nothing'),
       REPLACE('PING PONG','','K'),
       REPLACE('PING PONG','P','')
       
Nothing PING PONG ING ONG

以下示例显示 REPLACE 通过返回 NULL 来处理任何 NULL 参数。以下所有 REPLACE 函数都返回 NULL,包括最后一个,其中不发生匹配:

SELECT REPLACE(NULL,'K','P'),
       REPLACE(NULL,NULL,'P'),
       REPLACE('PING PONG',NULL,'K'),
       REPLACE('PING PONG','P',NULL),
       REPLACE('PING PONG','Z',NULL)
       
NULL NULL NULL NULL NULL

以下嵌入式 SQL 示例与前面的 NULL 示例相同。它显示了如何在 SQL 中将 ObjectScript 空字符串主变量视为 NULL

/// d ##class(PHA.TEST.SQLFunction).Replace1()
ClassMethod Replace1()
{
  s a = ""
  &sql(
    SELECT 
      REPLACE(:a,'K','P'),
      REPLACE(:a,:a,'P'),
      REPLACE('PING PONG',:a,'K'),
      REPLACE('PING PONG','P',:a),
      REPLACE('PING PONG','Z',:a)
    INTO :v,:w,:x,:y,:z
  )
  w !,"SQLCODE=",SQLCODE
  w !,"Output string=",v
  w !,"Output string=",w
  w !,"Output string=",x
  w !,"Output string=",y
  w !,"Output string=",z
}
DHC-APP>d ##class(PHA.TEST.SQLFunction).Replace1()
 
SQLCODE=0
Output string=
Output string=
Output string=
Output string=
Output string=

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhicebcf