mysql查询返回列不包含特定值的值

时间:2018-03-29 14:28:51

标签: mysql

我对mysql比较新。我正在尝试执行mysql查询以返回表列值不包含的值...' u'。我尝试了几件事,但它返回的是0行而不是1000行,应该是这样。现在,我的SW_Ver_update_status列已经初始化了所有null。

这是我到目前为止所做的尝试:

SELECT Distinct node_ipv4, model FROM Nokia_Network_Analyzer.NAC_DSLAMS 
WHERE vendor = 'Calix' AND model in ('C7','E7') AND  SW_Ver_update_status <> 
'u' LIMIT 100;

这是我的表结构,是的,它已经填充了大约2000:

element_key int(20) YES     
node_ipv4   varchar(25) YES     
node_ipv6   varchar(25) YES     
nodealias   varchar(25) NO  PRI 
fqdn    int(5)  YES     
region  varchar(3)  YES     
class   int(7)  YES     
service_tag int(5)  YES     
domain  varchar(15) YES     
active  int(2)  YES     
state   varchar(2)  YES     
LastUpdateUser  varchar(15) YES     
date_updated    datetime    YES     
date_created    datetime    YES     
vendor  varchar(15) YES     
model   varchar(15) YES     
software_version    varchar(20) YES     
head_node_monitor_pt    varchar(15) YES     
master_status   varchar(15) YES     
ping_reply  int(2)  YES     
LastUpdateIP    varchar(25) YES     
extra   int(2)  YES     
SW_Ver_update_status    varchar(1)  YES     
SW_ver_update_time  timestamp   YES     

看起来我根据我在网上搜索的内容做得很好: mysql <> &lt;&gt;部分是新的,在此之前它工作得很好。此外,SW_Ver_update_status和SW_ver_update_time列是表格的新内容。

imgurl=https://www.w3resource.com/w3r_images/example-mysql-not-equal-to.gif&imgrefurl=https://www.w3resource.com/mysql/comparision-functions-and-operators/not-equal-operator.php&h=168&w=573&tbnid=HwUlkWoO0-iCcM:&tbnh=61&tbnw=211&usg=__grwdkFtcmXwkG2dXbmo-X_0MQqc%3D&vet=10ahUKEwj1tMeX2JHaAhUC7GMKHbvLBg4Q9QEILTAA..i&docid=O4oNupGqNj6QpM&sa=X&ved=0ahUKEwj1tMeX2JHaAhUC7GMKHbvLBg4Q9QEILTAA

示例表数据:

    element_key  node_ipv4  node_ipv6  nodealias fqdn  region  class  service_tag  domain  active  state LastUpdateUser  date_updated  date_created  vendor  model  software_version  head_node_monitor_pt  master_status   ping_reply  LastUpdateIP  extra   SW_Ver_update_status  SW_ver_update_time
    null      10.xx.xxx.xx  null    BRFRFLIR123 null    FL  90712       SouthEast   null    FL  null    2018-02-20 07:48:42 2018-02-20 07:48:42 Calix   C7  1.0.320.669 empty   master  1   null  null  null  null      

1 个答案:

答案 0 :(得分:0)

NOT EQUAL运算符以完整值工作。

"abc" <> "a" #returns true 
"abc" <> "abc" #returns false

根据我的理解,您想检查您是否包含某个特定字符。您正在寻找LIKE

默认情况下,LIKE的工作方式类似于<>

"abc" LIKE "abc" #returns true
"abc" LIKE "b" #returns false

通过使用通配符,您可以获得所需的功能。

"abc" LIKE "%b%" #returns true

%说&#34;匹配任意数量的字符&#34;。通过在开头和结尾放置一个通配符,我们可以检查字符串是否包含varchar的开头,中间或末尾的一个或多个短语。

到目前为止,我已经向您展示了如何检查另一个短语/字符中是否存在短语/字符。要检查短语/字符是否不存在,您可以使用NOT关键字。

"abc" NOT LIKE "%b%" #returns false
"ac" NOT LIKE "%b%" #returns true

完整示例:

SELECT * FROM yourTable WHERE "abc" NOT LIKE "%b%"
SELECT * FROM yourTable WHERE "ac" NOT LIKE "%b%"

第一个查询将不返回任何内容,第二个查询将返回所有内容。

正如Dionei Miodutzki所提到的,如果你正在处理空值,你还需要检查空值。

SELECT * FROM `tableName` WHERE `columnName` IS NOT NULL && `columnName` NOT LIKE '%u%'

LIKEdocumentationW3Schools上了解NOT LIKESELECT (SELECT ARRAY_AGG( REGEXP_EXTRACT(pageViewed.val,r'\?test\=([^&]*)') IGNORE NULLS ORDER BY pageViewed.hit DESC LIMIT 1)[OFFSET(0)] FROM UNNEST(pagesViewed) AS pageViewed ) AS TestId, SUM(revenue) AS Revenue FROM `project.dataset.table` GROUP BY 1 ORDER BY 2 DESC; 的详情。