- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想从字符串中提取邮政编码。所以很自然地,我想到了这样的事情:
substring(PERSON_ADDRESS, instr(PERSON_ADDRESS,'[0-9][0-9][0-9][0-9][0-9]'), 5)
唉,看来 instr(str, '[0-9])
在 mysql 中不是有效的(它返回 0)
知道如何做到这一点吗?
非常感谢!
最佳答案
您创建一个用户定义的函数 - 只要潜在的邮政编码被空格括起来或位于最后一个标记位置,这应该起作用
drop function if exists tokens;
delimiter //
create function tokens(instring varchar(255))
returns varchar(255)
begin
declare tempstring varchar(100);
declare outstring varchar(100);
declare checkit int;
set tempstring = ltrim(rtrim(instring));
set checkit = 0;
looper: while tempstring is not null and instr(tempstring,' ') > 0 do
set outstring = substr(tempstring,1,instr(tempstring, ' ') - 1);
set tempstring = ltrim(rtrim(replace(tempstring,outstring,'')));
if length(outstring) = 5 then
if substring(outstring,1,1) between char(48) and char(57) and
substring(outstring,2,1) between char(48) and char(57) and
substring(outstring,3,1) between char(48) and char(57) and
substring(outstring,4,1) between char(48) and char(57) and
substring(outstring,5,1) between char(48) and char(57) then
set checkit = 1;
leave looper;
end if;
end if;
end while;
if checkit = 0 then
set outstring = tempstring;
if length(outstring) = 5 then
if substring(outstring,1,1) between char(48) and char(57) and
substring(outstring,2,1) between char(48) and char(57) and
substring(outstring,3,1) between char(48) and char(57) and
substring(outstring,4,1) between char(48) and char(57) and
substring(outstring,5,1) between char(48) and char(57) then
set checkit = 1;
end if;
end if;
end if;
if checkit = 0 then set outstring = 'NotFound'; end if;
return outstring;
end //
delimiter ;
鉴于此
+------+---------------------+
| id | address |
+------+---------------------+
| 1 | 13 mont 12c45 st |
| 2 | 13 mont 12345 st |
| 3 | 13 mont 12c45 45678 |
| 4 | 56789 mont 12c45 st |
+------+---------------------+
函数返回此
+------+---------------------+----------+
| id | address | zipcode |
+------+---------------------+----------+
| 1 | 13 mont 12c45 st | NotFound |
| 2 | 13 mont 12345 st | 12345 |
| 3 | 13 mont 12c45 45678 | 45678 |
| 4 | 56789 mont 12c45 st | 56789 |
+------+---------------------+----------+
关于Mysql 子字符串使用 instr(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38480181/
大家早上好...我需要一些帮助将功能从 VBA 移植到 VBS 这是我的问题所基于的数据集的示例。 USA_66544_File.doc RUS_3465_File.txt 我使用该函数提取两个下划线
我反编译了一个源文件,发现了一些JVM指令,比如JVM INSTR monitorenter和JVM INSTR monitorexit。这些是什么意思? public boolean isRunni
我有一个名为 DP 的列,如图所示: 07-APR-2011 12-APR-2011 26-APR-2011 现在要检索用于选择 4 月份付款的查询,我遇到了一个查询 select * from
在这个私有(private)函数中,如果满足以下要求,我想设置一个工作表: 单元格 Z1 必须包含单词 Special_Sheet 在 Special_sheet定义为 Description 的单元
我有以下 VBA 代码,它为 InStr 函数返回“0”: If InStr("ICD-10 & CPT OPC NHSN", "JCMC ICD-10 & CPT OPC NHSN Sep-17 n
我目前的任务是改进现有的 vba 文件。但是,我无法与执行此代码的人联系。那么我可以知道 first = InStr(2, sl, ",", 1) 中的逗号是什么意思吗?因为我去在 csv 文件中查找
我有以下代码: Columns("F:F").Select For Each cell In Selection Select Case cell Case InStr(1,
我的 InStr "OR"代码有问题。此代码:If InStr(items, "harmo") Or InStr(items, "pointt") Then count_of_Harmo = coun
我不知道为什么这行不通。它是一个更大的子例程的一部分,但我已将问题缩小到在 InStr 函数中使用通配符。 我已尝试尽可能多地查找有关 InStr 和通配符的信息,并且据我所知,这应该有效。但事实并非
使用正则表达式执行“instring”类型函数的最简单方法是什么?例如,我怎么能因为存在单个字符(如 :)而拒绝整个字符串?例如: 这个 - 好的 有:是 - 因为 : 不好 更实际一点,我如何匹配以
我需要循环浏览工作簿中的所有工作表。如果工作表的名称包含文本“Benefits”,那么我需要在该工作表上作为事件工作表运行宏,然后循环到下一个工作表。 我有这段代码,(1)它以任何一种方式运行宏,并且
我有一堆包含文本的行列,例如: dog,cat,mouse bat,dog,fly fish,beaver,horse 我正在尝试搜索并突出显示包含特定单词的行: Public Sub MarkDup
现在我有一长串用户通过表单提交的“行业”值。我编写了一个宏,它将搜索这些值中的特定术语,并粘贴符合我的“可接受”行业值的小得多的列表的值。重点是将用户提交的所有当前行业值重新分类到我现有的分类法中。这
我有一个电子表格,其中项目描述的长度可变,但始终以“硬返回”结束,以强制在单元格中换行。我需要将单元格的第一行复制到另一个单元格中。 我可以使用 INSTR 查找硬回车(不可见字符)的第一个实例,然后
我仍在尝试从网页中获取一些数据,我找到了如何“grep”HTML 文本的解决方案,但现在我尝试将字符串中的文本与某些部分分开。 我想取出变量A和变量B之间的部分并使用以下代码。 我总是收到运行时错误
我正在使用 Oracle 11g 数据库,我想找到字符串最后一个字符的位置。 例如: "City=Amsterdam" 本例中的字符串是“City=”,我想得到“=”的位置。我知道 INSTR(Inp
我正在执行查询以返回表中的值,这些值是字符串 (str) 中包含的子字符串。它正在工作,但现在我想按照给定字符串中出现的顺序对结果进行排序。另外,我希望它返回重复的匹配项,并保持主字符串中的顺序。 这
我想从字符串中提取邮政编码。所以很自然地,我想到了这样的事情: substring(PERSON_ADDRESS, instr(PERSON_ADDRESS,'[0-9][0-9][0-9][0-9]
我想检查字符串是否包含字段值作为子字符串。 select * from mytable where instr("mystring", column_name); 但这不会搜索单词边界。 select
我有一个表,其中有一列以下面的方式存储数据。 | column1 | +----------------+ | [112,114] | | [112,115] | |
我是一名优秀的程序员,十分优秀!