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