繁体   English   中英

SQL字符串仅包含

[英]SQL String contains ONLY

我有一个带有字段的表,该字段指示该行中的数据是否有效。 此字段包含长度不确定的字符串。 我需要一个查询,该查询将仅提取该字段中所有字符均为N的行。此字段的一些可能示例。

NNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNN
NNNNNEEEENNNNNNNNNNNN
NNNNNOOOOOEEEENNNNNNNNNNNN

请在明信片上提出任何建议。

非常感谢

这应该可以解决问题:

SELECT Field
FROM YourTable
WHERE Field NOT LIKE '%[^N]%' AND Field <> ''

它正在做的是通配符搜索,细分为:

LIKE将在字段中包含非N字符的位置找到记录。 因此,我们将NOT应用于该值,因为我们只对不包含N以外的字符的记录感兴趣。再加上一个条件,可以过滤出空白值。

SELECT  *
FROM    mytable
WHERE   field NOT LIKE '%[^N]%'

我不知道您正在使用哪种SQL语言。 例如,Oracle有几个您可以使用的功能。 使用oracle时,您可以使用以下条件:

WHERE LTRIM(field,'N')=''

这个想法是修剪掉所有的N,看看结果是否为空字符串。 如果没有LTRIM,请检查是否具有某种TRANSLATE或REPLACE函数来执行相同的操作。

做到这一点的另一种方法可能是选择字段的长度,然后通过用N填充空字符串来构造比较器值。也许类似:

WHERE字段= RPAD('',字段,'N)

Oracle用N填充该空字符串,并从第二个参数的长度中选择填充字符的数量。 也许这也可行:

WHERE字段= RPAD('',LENGTH(field),'N)

我没有测试过,但是希望可以给您一些解决问题的想法。 我想如果您有很多行并且没有其他WHERE条件来选择适当的索引,那么这些解决方案中的许多性能都会很差。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM