如何删除雪花中的所有 html 个字符,不想在查询中包含所有 html 个特殊字符(无硬编码)

how to remove all html characters in snowflake, dont want to include all html special characters in query (no hardcoding)

想从字符串中删除以下类型的字符..pl help ' &

您可以试试这个来删除任何 HTML 个特殊字符:

select REGEXP_REPLACE( 'abc&def³»ghi', '&[^&]+;', '!'  );

解释:

REGEXP_REPLACE 使用正则表达式进行查找和替换。我搜索“&[^&]+;”并将其替换为“!”用于演示。您当然可以使用 '' 删除它们。有关功能的更多信息:

https://docs.snowflake.com/en/sql-reference/functions/regexp_replace.html

关于正则表达式字符串:

  • & 是 HTML 特殊字符的 & 字符
  • [^&]表示除&以外的任意字符。这可以防止 REGEXP 替换第一个“&”字符和最后一个“;”之间的所有字符。它会在看到第二个 '&'
  • 时停止
  • + 表示匹配 1 个或多个前面的标记(& 以外的任何字符)
  • ;是 HTML 特殊字符
  • 的最后一个字符
CREATE or REPLACE FUNCTION UDF_StripHTML(str varchar)
  returns varchar
  language javascript
  strict
  as 
  'var HTMLParsedText=""
   var resultSet =  STR.split(''>'')
   var resultSetLength =resultSet.length
   var counter=0
   while(resultSetLength>0)
   {
      if(resultSet[counter].indexOf(''<'')>0)
      {    
        var value = resultSet[counter]
        value=value.substring(0, resultSet[counter].indexOf(''<''))
        if (resultSet[counter].indexOf(''&'')>=0 && resultSet[counter].indexOf('';'')>=0) 
        {
            value=value.replace(value.substring(resultSet[counter].indexOf(''&''), resultSet[counter].indexOf('';'')+1),'''')
        }
      }
        if (value)
        {
          value = value.trim();
          if(HTMLParsedText === "")
          {
              HTMLParsedText = value
          }
          else
          {
            if (value) {
              HTMLParsedText = HTMLParsedText + '' '' + value
            }
          }
          value=''''
        }
        counter= counter+1
      resultSetLength=resultSetLength-1
   }
    return HTMLParsedText';
  
to call this UDF :

Select UDF_StripHTML(text)