我只有空格作为长度为 121 个字符的列中的行值。
我想在 oracle 中编写一个查询来检查列字符串是否只有空格。
例如,如果说列地址。一行只包含空格(所有 121 个字符都是空格)。
我想要一个查询来检查该行是否只包含空格。
select * from table where address <> ' ';
但这不起作用,它只检查 1 个空格。我希望查询检查所有 121 个空格。
如果您将检查 121 个空格作为学习练习,那没关系,但如果您在生产应用程序的列中存储 121 个空格,则您的设计可能很糟糕。
如果列类型是CHAR
它可能应该更改为VARCHAR
(或VARCHAR2
在 Oracle 中)。如果它已经是VARCHAR
/VARCHAR2
你应该将一个空字符串存储为一个空字符串。
如果您需要将值填充到 121 个空格,请在查询时注意这一点:
SELECT RPAD(NVL(address, ' '), 121) FROM myTable
SELECT RPAD(address, 121, ' ') FROM myTable
如果您想查明该值是否为空,请记住 Oracle 将空字符串视为NULL
. MySQL 将其视为空字符串:
SELECT * FROM myTable WHERE address IS NULL
SELECT * FROM myTable WHERE address = ''
您可以在列上运行 TRIM。根据您的 DBMS,Null 字符串被视为 aNULL
或空字符串 ''。但是对于将空字符串视为 a 的 Oracle NULL
,您应该能够:
select * from table where LTRIM(RTRIM(address)) IS NOT NULL
请注意,TRIM 会删除所有空格,而不仅仅是空格字符。