Loading [MathJax]/jax/output/CommonHTML/config.js
社区首页 >问答首页 >SQL "substr“与"not in”相结合

SQL "substr“与"not in”相结合
EN

Stack Overflow用户
提问于 2019-07-01 01:48:09
回答 4查看 167关注 0票数 0

我有一张桌子上有这样的元素:

代码语言:javascript
代码运行次数:0
复制
LECOT113_A42401
DA_RIMUOVERE
TVCCVC16_A46C01
CBCELEN1_A46C01
SPCBA440_A46C02
582
ghhtthth
TESTVMM
SACCALEN_A46C0da_cancellare
MICTEST
DA_CANCELLARE2

我使用以下查询:

代码语言:javascript
代码运行次数:0
复制
select  ne.NODE     
from    ne
where   substr(ne.NODE,9,2) not in ('_A')

其结果是:

代码语言:javascript
代码运行次数:0
复制
DA_RIMUOVERE
DA_CANCELLARE2

而不是这个(目标):

代码语言:javascript
代码运行次数:0
复制
582
DA_RIMUOVERE582
ghhtthth
TESTVMM
SACCALEN_A46C0da_cancellare
MICTEST
DA_CANCELLARE2

谢谢!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2019-07-01 02:06:34

当开始位置大于字符串长度时,函数substr()返回null,因此将null'_A'进行比较会产生错误的结果。

所以要改变这一点:

代码语言:javascript
代码运行次数:0
复制
select  ne.NODE     
from    ne
where   length(ne.NODE) < 9 or length(ne.NODE) <> 15 or substr(ne.NODE,9,2) not in ('_A')

演示

结果:

代码语言:javascript
代码运行次数:0
复制
> | NODE                        |
> | :-------------------------- |
> | DA_RIMUOVERE                |
> | 582                         |
> | ghhtthth                    |
> | TESTVMM                     |
> | SACCALEN_A46C0da_cancellare |
> | MICTEST                     |
> | DA_CANCELLARE2              |
票数 2
EN

Stack Overflow用户

发布于 2019-07-01 02:10:48

事实上,在SQL NULL中,两者都不是真,不是假。在这种情况下,有些字符串的长度小于9,因此substr(.)返回空。空值非in (.)是空的。

更多信息可在问汤姆上找到

所以,只需重写以下内容的条件

代码语言:javascript
代码运行次数:0
复制
select  ne.NODE     
from    ne
where   nvl(substr(ne.NODE,9,2),'x') not in ('_A')
票数 0
EN

Stack Overflow用户

发布于 2019-07-01 02:53:24

原因是Oracle混淆了空字符串('')和NULL值。因此,子字符串返回NULL --然后大多数比较返回NULL而不是false。

一种方法是使用LIKE

代码语言:javascript
代码运行次数:0
复制
where ne.NODE not like '_________$_A%' escape '$' 

regexp_like()

代码语言:javascript
代码运行次数:0
复制
where regexp_like(ne.NODE, '^.{9}_A') 

或者确保字符串足够长:

代码语言:javascript
代码运行次数:0
复制
where substr(ne.NODE || 'xxxxxxxxxxx', 9, 2) not in ('_A')

或者检查长度和图案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56833437

复制
相关文章
SQL函数 SUBSTR
SUBSTR 不能与流数据一起使用。如果 string-expression 是流字段,则 SUBSTR 生成 SQLCODE -37。使用 SUBSTRING 从流数据中提取子字符串。
用户7741497
2022/08/01
6360
php 神坑substr() mb_substr() mb_subcut区别与联系
(1)为非负数,返回的字符串将从 string 的 start 位置开始, 至字符串结尾
一朵灼灼华
2022/08/05
9300
js中substr与substring的差别
Js的substring和C#的Substring的作用都是从一个字符串中截取出一个子字符串,但它们的用法却有非常大的不同,下边我们来比較看看:
全栈程序员站长
2022/07/09
1K0
SNI代理与DNS解析相结合
在当今互联网时代,加密通信已成为保护用户隐私和数据安全的重要手段。而使用HTTPS协议进行加密传输更是日益普及。然而,在构建一个高效且灵活的HTTPS代理服务器时,我们常常面临着一些挑战。
华科云商小孙
2023/09/04
6090
java中substring与substr的用法(转)
1.substring 方法 定义和用法 substring 方法用于提取字符串中介于两个指定下标之间的字符。 语法 stringObject.substring(start,end) 参数     描述 start     必需。一个非负的整数,规定要提取的子串的第一个字符在 stringObject 中的位置。 end     可选。一个非负的整数,比要提取的子串的最后一个字符在 stringObject 中的位置多 1。如果省略该参数,那么返回的子串会一直到字符串的结尾。 返回值 一个新的字符串,该字符串值包含 stringObject 的一个子字符串,其内容是从 start 处到 end-1 处的所有字符,其长度为 end 减 start。 说明 substring 方法返回的子串包括 start 处的字符,但不包括 end 处的字符。 如果 start 与 end 相等,那么该方法返回的就是一个空串(即长度为 0 的字符串)。 如果 start 比 end 大,那么该方法在提取子串之前会先交换这两个参数。 如果 start 或 end 为负数,那么它将被替换为 0。 2.substr 方法 定义和用法 substr 方法用于返回一个从指定位置开始的指定长度的子字符串。 语法 stringObject.substr(start [, length ]) 参数    描述 start   必需。所需的子字符串的起始位置。字符串中的第一个字符的索引为 0。 length 可选。在返回的子字符串中应包括的字符个数。 说明 如果 length 为 0 或负数,将返回一个空字符串。 如果没有指定该参数,则子字符串将延续到stringObject的最后。 举例: var str = "0123456789"; alert(str.substring(0));------------"0123456789" alert(str.substring(5));------------"56789" alert(str.substring(10));-----------"" alert(str.substring(12));-----------"" alert(str.substring(-5));-----------"0123456789" alert(str.substring(-10));----------"0123456789" alert(str.substring(-12));----------"0123456789" alert(str.substring(0,5));----------"01234" alert(str.substring(0,10));---------"0123456789" alert(str.substring(0,12));---------"0123456789" alert(str.substring(2,0));----------"01" alert(str.substring(2,2));----------"" alert(str.substring(2,5));----------"234" alert(str.substring(2,12));---------"23456789" alert(str.substring(2,-2));---------"01" alert(str.substring(-1,5));---------"01234" alert(str.substring(-1,-5));--------"" alert(str.substr(0));---------------"0123456789" alert(str.substr(5));---------------"56789" alert(str.substr(10));--------------"" alert(str.substr(12));--------------"" alert(str.substr(-5));--------------"0123456789" alert(str.substr(-10));-------------"0123456789" alert(str.substr(-12));-------------"0123456789" alert(str.substr(0,5));-------------"01234" alert(str.substr(0,10));------------"0123456789" alert(str.substr(0,12));------------"0123456789" alert(str.substr(2,0));-------------"" alert(str.substr(2,2));-------
似水的流年
2019/12/13
2.3K1
substr怎么用
第一种用法:string Son_a=a.substr(5);从下标5开始形成新的子字符串
glm233
2020/09/28
3.9K0
WeTrust-将储蓄与区块链相结合
我们之前曾研究过区块链对于没有银行帐户的人的作用。WeTrust是一家小额信贷的创业公司,该公司正准备加速在新兴市场中引入分散式小额贷款模式。
飞翔的猪脚粉
2018/03/21
1.5K0
WeTrust-将储蓄与区块链相结合
关于pyecharts可视化与Flask相结合
关于pyecharts和flask结合的案例不多,查阅了数十篇文章,尝试了若干遍,感觉还是不理想,最大的问题在于对echarts的理解上,对我而言,又需要向上推到ajax,jquery,bootstrap,html,css,javascript等等,有点超出了我的技能范围,所以最大程度的做到能用就够了,复用和进一步优化看起来还是遥遥无期。
python与大数据分析
2022/03/11
1.3K0
关于pyecharts可视化与Flask相结合
当移动技术与云计算相结合
移动技术使我们的生活发生的颠覆性的变化,可以这么说,目前我们所有人都生活在一个移动的世界中,生活中充斥着各种各样的移动设备,如智能手机、平板电脑,甚至在不久的将来会无处不见的可穿戴设备。而与移动技术相比有过之而无不及的另一项技术——云技术,它的实践也在不断地改变着移动行业。 虽然云技术促进了移动行业的高速发展,但想达到十全十美还有好长一段距离。而且对云技术你是否利用的很到位,本文介绍了三个移动技术不可错失的云实践。 备份应用数据 过去一段时间,我使用了几个Android系统的手机。与较旧
静一
2018/03/16
1.1K0
数字藏品系统与文旅相结合
背景:某文旅企业为了提升自身品牌影响力和用户粘性,决定开发一套基于自建联盟链的数字藏品系统,将其旗下的各类文化和旅游资源进行数字化转化,打造独特的文旅数字藏品,并通过区块链技术保证其唯一性、稀缺性和可信性,同时提供线上线下的交互体验,吸引更多年轻人参与。
I8538213I93
2023/03/10
3450
数字藏品系统与文旅相结合
MySQl ifnull()和substr()
SUBSTR(str,pos,len) substr用来截取字符串; str 被截取的字符串 pos 开始位置 len 长度 举个例子: substr('abc',1,2)='ab' IFNULL(expr1,expr2) 判断函数,判断expr1是否为空,如果为空返回expr2, 如果不为空则返回expr1。 举个例子: ifnull(a,'b') = x; if a==0; 结果x='b' if a<>0; 结果x=a 的值。
Happy、Liu
2019/04/24
1K0
Seata分布式事务 (理论与部署相结合)
在数据库水平拆分、服务垂直拆分之后,一个业务操作通常要跨多个数据库、服务才能完成。例如电商行业中比较常见的下单付款案例,包括下面几个行为:
不吃紫菜
2023/03/08
1.2K0
Seata分布式事务 (理论与部署相结合)
小程序可以与AI相结合的几种方式
语音识别和语音交互:小程序可以通过集成语音识别技术,实现语音输入和语音交互功能。用户可以通过语音进行搜索、下单、查询等操作,提高用户的操作便捷性。
飞梦工作室
2023/07/07
3160
mysql中的substr()函数
substr(string string,num start,num length);
时光_赌徒
2020/10/10
2.3K0
Web3与chatGPT相结合以及特点
Web3是一种使用区块链技术的新型网络,它将智能合约、网络和用户结合起来,在这种新型网络中,用户可以拥有更大的控制权和安全性。
I8538213I93
2023/02/14
1.1K0
Web3与chatGPT相结合以及特点
hive编程 | substr用法详解
使用语法: substr(string A, int start),substring(string A, int start) 两者用法一样,两个参数
week
2022/01/07
2.8K0
chatgpt与游戏相结合提高游戏的丰富度与可玩性
在以往的游戏中,npc的语言包我们都是对他进行了固定化,并没有太大的活性,当玩家经常经过某一个npc时,npc的发言也是有限的,我们可以通过对chatgpt的调用对npc的语言进行一个扩充
凡尘扰凡心
2023/02/17
9271
[PHP] substr占用内存谨慎使用
在下面的场景中使用substr的时候, 有时候会报超出内存fatal error ,当curl读取的内容过大的时候
唯一Chat
2019/09/10
2.6K0
[PHP] substr占用内存谨慎使用
大数据和AI怎么与现代教育相结合?
==== 技术商业观察er ==== we are new observer Observation, we are professional observers, we always look attentively at business changes 人工智能怎么与现代教育相结合? “5年以后,你将可以在网上免费获取世界上最好的课程,而且这些课程比任何一个单独大学提供的课程都要好。” ——比尔•盖茨 现在看来,虽然并不是每个网上课程都能强过大学教程,但是在线教育已经成为现实,据业内人士估
企鹅号小编
2018/02/02
8300
大数据和AI怎么与现代教育相结合?
Neurevt 木马与窃密程序相结合,针对墨西哥企业
恶意行为从混淆的恶意 PowerShell 命令开始,该命令会下载一个 Neurevt 家族的恶意文件。
FB客服
2021/09/16
5240

相似问题

str_replace与substr相结合

12

将SQL与Speedment相结合

10

将Java与SQL相结合?

60

与AND和OR相结合的SQL语句

20

SQL insert查询与select相结合

15
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文