在SQL语句中如何用正则取出一个字符串的前几位数字

作者&投稿:法贵 (若有异议请与网页底部的电邮联系)
mysql 正则表达式 如何截取字符串中指定格式的字符~

mysql> select @col;
+---------------------------+
| @col |
+---------------------------+
| 2.1.3.14单独的3中文3中文1 |
+---------------------------+
1 row in set

mysql> select concat(substring_index(@col, ".", 3), ".", replace(@col, concat(substring_index(@col, ".", 3), "."), "")+0) as result;
+----------+
| result |
+----------+
| 2.1.3.14 |
+----------+
1 row in set


你把第二句中的 @col 替换成你的列名就可以了,然后加上 from 表 成为一个完成的 sql 语句试试吧。

1、创建测试表,
create table test_split(id number, value varchar2(20));

2、插入测试数据
insert into test_split values(1,'12345678');
insert into test_split values(2,'12345');
insert into test_split values(2,'5678');

3、查询表中记录,select t.*, rowid from test_split t;

4、编写sql,每隔两位用:分割,
select t.*,
rtrim(substr(value, 1, 2) || ':' || substr(value, 3, 2) || ':' ||
substr(value, 5, 2) || ':' || substr(value, 7, 2),
':') value2
from test_split t;

  1. SQL 取字符串的前几位数字,SQL 关键字 substring

  2. substring 使用方法,参考下列SQL:

  3. declare @T  nvarchar(10)

  4. set @T='12345abcde'

  5. select substring(@T,1,5)

  6. 结果如下:12345

  7. 如果是SQL 写正则表达式判断,只能通过存储过程或函数来处理

  8. SQL 如下:

  9. CREATE FUNCTION dbo.find_regular_expression
    (
    @source varchar(5000),   --需要匹配的源字符串
    @regexp varchar(1000),  --正则表达式
    @ignorecase bit = 0  --是否区分大小写,默认为false
    )
    RETURNS bit  --返回结果0-false,1-true
    AS
    BEGIN
    --0(成功)或非零数字(失败),是由 OLE 自动化对象返回的 HRESULT 的整数值。
    DECLARE @hr integer
    --用于保存返回的对象令牌,以便之后对该对象进行操作
    DECLARE @objRegExp integer   DECLARE @objMatches integer
    --保存结果
    DECLARE @results bit

    /*
    创建 OLE 对象实例,只有 sysadmin 固定服务器角色的成员才能执行 sp_OACreate,

    并确定机器中有VBScript.RegExp类库
    */
    EXEC @hr = sp_OACreate 'VBScript.RegExp', @objRegExp OUTPUT
    IF @hr <> 0 BEGIN
    SET @results = 0
    RETURN @results
    END
    /*
    以下三个分别是设置新建对象的三个属性。下面是'VBScript.RegExp'中常用的属性举例:
    Dim regEx,Match,Matches         '建立变量。
    Set regEx = New RegExp         '建立一般表达式。
    regEx.Pattern= patrn         '设置模式。
    regEx.IgnoreCase = True         '设置是否区分大小写。
    regEx.Global=True                             '设置全局可用性。
    set Matches=regEx.Execute(string)             '重复匹配集合
    RegExpTest = regEx.Execute(strng)       '执行搜索。
    for each match in matches                     '重复匹配集合
    RetStr=RetStr &"Match found at position "
    RetStr=RetStr&Match.FirstIndex&".Match Value is '"
    RetStr=RetStr&Match.Value&"'."&vbCRLF Next
    RegExpTest=RetStr
    */
    EXEC @hr = sp_OASetProperty @objRegExp, 'Pattern', @regexp
    IF @hr <> 0 BEGIN
    SET @results = 0
    RETURN @results
    END
    EXEC @hr = sp_OASetProperty @objRegExp, 'Global', false
    IF @hr <> 0 BEGIN
    SET @results = 0
    RETURN @results
    END
    EXEC @hr = sp_OASetProperty @objRegExp, 'IgnoreCase', @ignorecase
    IF @hr <> 0 BEGIN
    SET @results = 0
    RETURN @results
    END
    --调用对象方法
    EXEC @hr = sp_OAMethod @objRegExp, 'Test', @results OUTPUT, @source
    IF @hr <> 0 BEGIN
    SET @results = 0
    RETURN @results
    END
    --释放已创建的 OLE 对象
    EXEC @hr = sp_OADestroy @objRegExp
    IF @hr <> 0 BEGIN
    SET @results = 0
    RETURN @results
    END
    RETURN @results
    END



提取字符串的子串用substr 函数,正则只能匹配,不能提取

SUBSTR(STR,m,n) :取出字符串STR从m个字符开始的n个字符
SELCT SUBSTR(NAME,1,6) FROM STUDENT

select substring('1234',1,2);
+--------------------------+
| substring('1234',1,2) |
+--------------------------+
| 12 |
+--------------------------+

select substring('1234',0,2)
+--------------------------+
| substring('1234',0,2) |
+--------------------------+
| 1 |
+--------------------------+


SQL中如何使用IF语句
SQL中可以使用IF语句进行条件判断。在SQL中,IF语句常用于存储过程、函数和触发器中,用于根据条件执行不同的代码块。尽管SQL本身并不直接支持像其他编程语言中的IF语句那样的条件语句,但大多数数据库管理系统(DBMS)提供了自己的实现方式。以MySQL为例,IF语句的使用如下:sql IF expression THEN -- co...

SQL语句在数据库中是如何执行的
第一步:应用程序把查询SQL语句发给服务器端执行我们在数据层执行SQL语句时,应用程序会连接到相应的数据库服务器,把SQL语句发送给服务器处理。第二步:服务器解析请求的SQL语句SQL计划缓存,经常用查询分析器的朋友大概都知道这样一个事实,往往一个查询语句在第一次运行的时候需要执行特别长的时间,但是...

怎么用sql语句建表sqlyog怎么用sql语句建表
1、使用sql语句创建;2、在数据库-表结构管理界面创建。

Access中使用SQL语句应掌握的几点技巧(学习)
以下SQL语句在ACCESS XP的查询中测试通过 建表: Create Table Tab1 ( ID Counter, Name string, Age integer,[Date] DateTime); 技巧: 自增字段用 Counter 声明。 字段名为关键字的字段用方括号[]括起来,数字作为字段名也可行。 建立索引: 下面的语句在Tab1的Date列上建立可重复索引: Create Ind...

如何用Sql语句添加字段?
通用式: alter table [表名] add [字段名] 字段属性 default 缺省值 default 是可选参数\\x0d\\x0a增加字段: alter table [表名] add 字段名 smallint default 0 增加数字字段,整型,缺省值为0\\x0d\\x0aalter table [表名] add 字段名 int default 0 增加数字字段,长整型,缺省值为0\\...

如何用Sql语句添加字段?
通用式: alter table [表名] add [字段名] 字段属性 default 缺省值 default 是可选参数\\x0d\\x0a增加字段: alter table [表名] add 字段名 smallint default 0 增加数字字段,整型,缺省值为0\\x0d\\x0aalter table [表名] add 字段名 int default 0 增加数字字段,长整型,缺省值为0\\...

sql语句中if条件的使用
 1、查询选项中select的使用 SELECT IF((SELECT count(*) FROM `user`)>10,'大于10条','小于10条')msg FROM `user` WHERE id=2;如下图所示:判断总条数大于10,则显示为'大于10条',否则显示'小于10条'2、where条件中的使用 SELECT name,id FROM `user` WHERE IF((SELECT count(...

sql语句中判断条件的使用
1、首先我们打开SQL Server Management Studio管理工具,点击【新建查询】,新增一个书写sql语句的窗口。2、在上一步打开的sql语句输入窗口,定义一个整数类型的变量,设置初始值等于10。3、使用if条件语句,判断上面的临时变量是否等于10,如果等于就输出一行文字。4、当上面的sql语句写完之后,点击顶部菜单...

如何使用SQL?
SQL中有四种基本的DML操作:INSERT,SELECT,UPDATE和DELETE。由于这是大多数SQL用户经常用到的,我们有必要在此对它们进行一一说明。在图1中我们给出了一个名为EMPLOYEES的表。其中的每一行对应一个特定的雇员记录。请熟悉这张表,我们在后面的例子中将要用到它。INSERT语句 用户可以用INSERT语句将一行...

如何用sql语句删除数据库中表?
删除数据库的sql语句如下:drop database:数据库名--删除数据库的。drop table:表名--删除表的。delete from:表名--where条件--删除数据的。truncate table:表名--也是删除数据库的。SQL即结构化查询语言(Structured Query Language),是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,...

德安县18269286096: sql语句 怎么用 正则表达式 查询 一个 符合 “ - ” 加数字 的字短? 如查出 字段 “ - 23", 而 “ - 23 - ”
子颖恩必: select * from tba where b like '-[0-9]'or b like '-[0-9][0-9]' or b like '-[0-9]%[0-9]'--------------------------------select * from abc where b like '-[0-9]'or -----------匹配:'-'加单数字b like '-[0-9][0-9]' or ------匹配:'-'加双数字b like '-[0-9]%[0-9]' -------匹配:'-'加三个以上数字

德安县18269286096: mysql 中用正则表达式如何取一个字符串中指定的字段, -
子颖恩必: 代码如下:CREATE PROCEDURE sp_str(IN p_str VARCHAR(50), /*原始字符串*/IN p_begin_str VARCHAR(50), /*要匹配的起始字符串*/IN p_end_str VARCHAR(50)) /*要匹配的结束字符串*/OUT p_result VARCHAR(50)) /*返回结果*/...

德安县18269286096: 如何在sql语句中使用正则表达式 -
子颖恩必: sqlserver中,主要有regexp_like,regexp_replace,regexp_substr,regexp_instr四个正则表达式函数.1、regexp_like:regexp_like(x,pattern[,match_option]),查看x是否与pattern相匹配,该函数还可以提供一个可选的参数match_option字符串说明默...

德安县18269286096: SQL语句用正则表达式怎样表示? -
子颖恩必: 正则表达式语法 一个正则表达式就是由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式.该模式描述在查找文字主体时待匹配的一个或多个字符串.正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹...

德安县18269286096: sql语句 怎样实现提取某列的关键字添加到新的一列? -
子颖恩必: 如果你的SQL版本支持正则表达式就好办了.如果不支持,有两个方案.方案1,用case 和charindex.方案二写函数(这个比较麻烦,思路是把那些非关键字替换掉了).以方案1写一个样子给你做参考.解题: 你的关键字是:【压缩机,主轮...

德安县18269286096: SQL语句提取字符串中数字 -
子颖恩必: 比如你的表叫作TALBE1,字段是str1,类型为nvarchar,那么找出有湘政发的最大号加1这样写 select max(convert(int,substring(str1,patindex(N'%[1234567890]%',str1),len(str1)-patindex(N'%[1234567890]%',str1)+1-patindex(N'%[1234567890]%',...

德安县18269286096: SQL 怎么提取一个模式的字符串 -
子颖恩必: 这个通常我的做法有两种方式(sql server,如果你是oracle或是其他的......) 第一种,也是我用的最多的,就是用sql server 自身带的一些字符串函数去处理,这种方式需要你自己去分析,做法比较灵活,比如书你这个,如果仅以你这3...

德安县18269286096: sql语句在一个字段中提取数字? -
子颖恩必: select regexp_substr('水库新村332号','[0-9]+' ) from dual;--用正则表达式取出数字select regexp_substr('水库新村332号','[[:digit:]]+') from dual;

德安县18269286096: ORACLE中怎样用正则表达式过滤中文字符 -
子颖恩必: 从表里提取汉字, 需要考虑字符集, 不同的字符集汉字的编码有所不同 这里以GB2312为例, 写一函数准确地从表里提取简体汉字.假设数据库字符集编码是GB2312, 环境变量(注册表或其它)的字符集也是GB2312编码 并且保存到表里的...

德安县18269286096: 怎么用正则表达式解析sql语句 -
子颖恩必: 先看要解析的样例SQL语句:select * from dual SELECT * frOm dual Select C1,c2 From tb select c1,c2 from tb select count(*) from t1 select c1,c2,c3 from t1 where condi1=1 Select c1,c2,c3 From t1 Where condi1=1 select c1,c2,c3 from t1,t2 where ...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网