gpt4 book ai didi

sql - SQL字符串比较-如何忽略空格

转载 作者:行者123 更新时间:2023-12-02 07:24:56 25 4
gpt4 key购买 nike

我准备了一个SQL查询,必须在几个数据库(Oracle和Sybase)上运行,这些数据库可能以不同的方式存储数据。

我注意到,数据存储的区别之一是空白字符串。
例如,在下面的PRODUCT_TYPE列中,请查看第二条记录:

enter image description here

在某些数据库中,用红色圆圈圈起的“空字符串”(数据类型为CHAR(15))等于'',而在另一些数据库中则等于' '。长度从不恒定,并且有几个字段具有相同的行为。

因此,由于需要过滤这些“空字符串”,因此应在WHERE子句中更改以下语句:

WHERE PRODUCT_TYPE = ''

...因为以上内容将 ' '字符串视为不同于 ''的字符串,即使“从功能上来说”不是这样。
因此,我想以“忽略空格”的方式做出声明,即 ' '等于 ''等于 ' '等。
我应该如何进行此更改以使其起作用?

我尝试了简单的替换方法:
WHERE REPLACE(PRODUCT_TYPE,' ','') = ''

...但是似乎无效,可能是因为我应该使用其他字符。
为了测试,在下面的 '中有一个复制粘贴的示例,这些示例是我在这些“空字符串”中找到的:
'               '

理想情况下,它应该是“非特定的SQL”解决方案,因为我将不得不在Oracle和Sybase RDBMS上运行相同的查询。任何的想法?

最佳答案

您可以在列上使用trim

where trim(product_type) is null

上面的内容与DBMS无关,因为Sybase不提供 trim函数。
但是,以下方法在Sybase和Oracle中均适用:
where rtrim(ltrim(product_type)) is null

关于sql - SQL字符串比较-如何忽略空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33759903/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com