Mysql 如何构建sql查询以检查列的值是否为所有空格

Mysql 如何构建sql查询以检查列的值是否为所有空格,mysql,sql,oracle,space,spaces,Mysql,Sql,Oracle,Space,Spaces,在长度为121个字符的列中,只有空格作为行的值 我想在oracle中编写一个查询,以检查列字符串是否仅为空格 例如,如果说列地址。一行只包含空格(所有121个字符都是空格) 我需要一个查询来检查行是否只包含空格 从地址为“”的表中选择* 但这不起作用,它只检查1个空间。我希望查询检查所有121个空格。您可以对列进行修剪。根据您的DBMS,空字符串被视为Null或空字符串“”。但对于将空字符串视为NULL的Oracle,您应该能够执行以下操作: 从LTRIM(RTRIM(地址))不为空的表中选择*

在长度为121个字符的列中,只有空格作为行的值

我想在oracle中编写一个查询,以检查列字符串是否仅为空格

例如,如果说列地址。一行只包含空格(所有121个字符都是空格)

我需要一个查询来检查行是否只包含空格

从地址为“”的表中选择*


但这不起作用,它只检查1个空间。我希望查询检查所有121个空格。

您可以对列进行修剪。根据您的DBMS,空字符串被视为
Null
或空字符串“”。但对于将空字符串视为
NULL
的Oracle,您应该能够执行以下操作:

从LTRIM(RTRIM(地址))不为空的表中选择*

请注意,TRIM会删除所有空格,而不仅仅是空格字符。

使用
REPLACE()
函数并将其结果与null进行比较

SELECT * FROM table WHERE REPLACE(address,' ') IS NULL;

如果您将检查121个空格作为学习练习,那么这没关系,但是如果您将121个空格存储在生产应用程序的列中,则可能设计不好

如果列类型为
CHAR
,则可能应将其更改为
VARCHAR
(或Oracle中的
VARCHAR2
)。如果它已经是
VARCHAR
/
VARCHAR2
,那么应该同时存储一个空字符串

如果需要将值填充到121个空格,请在查询时注意:

  • Oracle:
    从myTable中选择RPAD(NVL(地址“”),121)
  • MySQL:
    从myTable中选择RPAD(地址,121,”)
如果要确定该值是否为空,请记住Oracle将空字符串视为
NULL
。MySQL将其视为空字符串:

  • Oracle:
    从地址为空的myTable中选择*
  • MySQL:
    从myTable中选择*地址=''

空格是制表符、回车符/换行符和空格字符。正如另一个答案所说,定义为CHAR的大字段通常是糟糕设计的征兆。