在SQL语句中如何用正则取出一个字符串的前几位数字
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;
SQL 取字符串的前几位数字,SQL 关键字 substring
substring 使用方法,参考下列SQL:
declare @T nvarchar(10)
set @T='12345abcde'
select substring(@T,1,5)
结果如下:12345
如果是SQL 写正则表达式判断,只能通过存储过程或函数来处理
SQL 如下:
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),是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,...
子颖恩必: 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 ...