html 存储在一个字段中被拆分为多行

html stored in a field gets split to multiple rows

我有一个配置文件 table 保存镶木地板文件。这些行包含一个 html 页面或一个简单的字符串。当我尝试一个简单的 select

select text from table

我将整个 html 作为一行。

1 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"     "http://www.w3.org/

但是当我应用任何过滤器时

select text from table where text rlike 'xml';

html 中的每个标签都显示为单独的行。像这样

1 <?xml version="1.0" encoding="UTF-8"?>
2   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
3       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
4   <html xmlns="http://www.w3.org/1999/xhtml">

为什么会这样?

编辑

我认为它与换行符有关,但在这种情况下,第一个 select 应该 return 与第二个没有发生的结果相同。

还有。 This 文章说这对镶木地板来说应该不是问题。

rlike 基于正则表达式。

Reference: A 喜欢 B 如果 A 或 B 为 NULL,则为 NULL;如果 A 的任何(可能为空)子字符串与 Java 正则表达式 B 匹配,则为 TRUE,否则为 FALSE。例如,'foobar' RLIKE 'foo' 计算结果为 TRUE,'foobar' RLIKE '^f.*r$'.

也是如此

因此语句 select text from table where text rlike 'xml'; 很可能会检索具有字符 'x'、'm'、[=28= 的文本的所有 子字符串 ],同时将标签之间的space作为分隔符。

select text from table where text like '%xml%'

看起来它实际上是新行。更换后

regexp_replace(text, '\n', '') as text

我可以将 html 作为单个字符串使用。