当前位置:首页 » 编程语言 » sql匹配字符串

sql匹配字符串

发布时间: 2022-02-28 17:42:33

1. sql 多个字段匹配

我来回答吧:
你那种方法不对呀 ,你为什么不能换个思维呐,
A in (a,b,c,d,e,f) 条件成立 可以 视为 1, 即字段A等于 a、b、c、d、e、f任何一个值就条件成立。
B in (a,b,c,d,e,f) 条件成立 可以 视为 1, 即字段B等于 a、b、c、d、e、f任何一个值就条件成立。
C in (a,b,c,d,e,f) 条件成立 可以 视为 1, 即字段C等于 a、b、c、d、e、f任何一个值就条件成立。
D in (a,b,c,d,e,f) 条件成立 可以 视为 1, 即字段D等于 a、b、c、d、e、f任何一个值就条件成立。
E in (a,b,c,d,e,f) 条件成立 可以 视为 1, 即字段E等于 a、b、c、d、e、f任何一个值就条件成立。
F in (a,b,c,d,e,f) 条件成立 可以 视为 1, 即字段F等于 a、b、c、d、e、f任何一个值就条件成立。

select * from 你的表名
where
A in (a,b,c,d,e,f) and
B in (a,b,c,d,e,f) and
C in (a,b,c,d,e,f) and
D in (a,b,c,d,e,f) and
E in (a,b,c,d,e,f) and
F in (a,b,c,d,e,f)

字段A值出现在a,b,c,d,e,f任何一个中,成立
。。。
字段F值出现在a,b,c,d,e,f任何一个中,成立
用and或者 or连接。

修改如下:

select * from hong
where
num1 in (haoma1,haoma2,haoma3,haoma4,haoma5,haoma6) and
num2 in (haoma1,haoma2,haoma3,haoma4,haoma5,haoma6) and
num3 in (haoma1,haoma2,haoma3,haoma4,haoma5,haoma6) and
num4 in (haoma1,haoma2,haoma3,haoma4,haoma5,haoma6) and
num5 in (haoma1,haoma2,haoma3,haoma4,haoma5,haoma6) and
num6 in (haoma1,haoma2,haoma3,haoma4,haoma5,haoma6)

或者

select * from hong
where
num1 in (haoma1,haoma2,haoma3,haoma4,haoma5,haoma6) or
num2 in (haoma1,haoma2,haoma3,haoma4,haoma5,haoma6) or
num3 in (haoma1,haoma2,haoma3,haoma4,haoma5,haoma6) or
num4 in (haoma1,haoma2,haoma3,haoma4,haoma5,haoma6) or
num5 in (haoma1,haoma2,haoma3,haoma4,haoma5,haoma6) or
num6 in (haoma1,haoma2,haoma3,haoma4,haoma5,haoma6)

2. sql语句中查找某字段中含有某字符串的语句怎么写

select filename from oa_file where filename not like '%[!-¥]%'

或者这个:

select filename from oa_file where filename not like '%[!-?]%'

出现的问题就是问号和问好也是不一样的,比如说英文标点半角的问号是“?”,英文标点全角的问号是“?”但是中文半角问号是“?”中文全角的问号是“?”

这些都是不一样的,你搜出来的都是带有英文半角问号的文件。

(2)sql匹配字符串扩展阅读:

SQL中的字段“包含”与“包含于”字符串的写法

1、查询表中某字段值“包含”某字符串的所有记录的方法

假如表中有一个name字段,查询name包含“张三”的所有记录,可以这样写sql:

Stirng strsql="SELECT * FROM 表名 WHERE name LIKE ’%"+"张三"+"%’";

2、查询某字段值“包含于”某个字符串的所有记录的方法

如果查询表中name字段包含于字符串“张三是个好学生”的所有记录,可以这样写sql:

String strsql="SELECT * FROM 表名 WHERE INSTR(’张三是个好学生’,name)>0";

即可查询,记录中的name字段值中包括:张、三、是、个、好、学、生、张三、......等所有记录。

注:以上sql字符串中请将全角符号改为半角符号。

3. sql字符串匹配用什么符号

字段名 like '%字符串%'

4. 如何用sql查询一个字符串的一部分

select substr('2009/2/5',1,6) from table_name

substr(A,m,n)函数,是将字段A从第m个字符截取n个字符。

5. sql 在一个字符串中查找特定的字符串

like '25,%' or like '%,25,%' or like '%,25'

补充:
写成存储过程
或拼接sql字符串

//自己动手,丰衣足食!阿弥陀佛!!!!

6. sql匹配多组字符查询

select a.name1,b.name2
from a
left join b on a.name1 like '%'||b.name2||'%'

7. SQL语言的字符串匹配运算符是

以sqlserver,oracle,mysql三种数据库为例,因为这三种数据库具有代表性。
sqlserver:
select
'123'+'456';
oracle:
select
'123'||'456'
from
al;

select
concat('123','456')
from
al;
mysql:
select
concat('123','456');
注意:oracle和mysql中虽然都有concat,但是oracle中只能拼接2个字符串,所以建议用||的方式;mysql中的concat则可以拼接多个字符串。

8. sql 正则表达式匹配

  • 当我们要进行一些简单的糊涂查询时用百分号(%),通配符(_)就可以了.其中%表达任意长度的字符串,_表示任意的某一个字符.

比如

select*fromempwhereenamelike's%'orenamelike's_';

但如果在一些复杂的查询中关用这两个符号sql语句就会非常复杂,而且也不一定能实现.从Oracle 10g开始引入了在其他程序语言中普通使用的正则表达式.

主要有regexp_like,regexp_replace,regexp_substr,regexp_instr四个正则表达式函数.

  • 正则表达式中的元字符:

元字符 意思 例子

说明要匹配的字符是一个特殊字符、常量或者后者引用。(后引用重复上一次的匹配)

匹配换行符
\ 匹配
匹配(匹配 )


^ 匹配字符串的开头位置 ^a匹配arwen.但不匹配barwen.

$ 匹配字符串的末尾位置 en$匹配arwen.但不匹配arwenb.

* 匹配前面的字符0次或多次 a*rwen可以匹配rwen或aaarwen.

+ 匹配前面的字符1次或多次 a+rwen可以匹配arwen或aarwen.但不能匹配rwen.

? 匹配前面的字符0次或1次 a?rwen可以匹配arwen或rwen.但不能匹配aarwen.

{n} 匹配前面的字符恰好是n次,其中n是整数 ar{2}wen可以匹配arrwen.但不能匹配arwen或arrrwen.

{n,m} 匹配前面的字符至少是n次,最多是m次.如果写成{n,} 表示最少匹配n次.没有上限.

ar{1,2}wen可以匹配arwen,arrwen.但不匹配awen或arrrwen.


. 点号,匹配除null,换行以外的任意单个字符 arw.n.可以匹配arwen,arwin.但不能匹配arween或arwn.

(pattern) 括号中pattern是一个子正则表达式,匹配指定pattern模式的一个子表达式。 其实括号就像一般语言表达式中的括号.有时多加些括号可增强可读性.另外的用处见下面关于 的描述.

x|y 匹配“或” x|y可以匹配x或者y

[abc] 可以匹配abc中的任何单个字符 hello[abc]可以匹配helloa,hellob,helloc

[a-z] 可以匹配指定范围内的任何单个字符 hell[a-z]可以匹配hello或者hellz

[::] 指定一个字符类,可以匹配该类中的任何字符 [:alphanum:]可以匹配字符0-9、A-Z、a-z
[:alpha:]可以匹配字符A-Z、a-z
[:blank:]可以匹配空格或tab键
[:digit:]可以匹配数字0-9
[:graph:]可以匹配非空字符
[:lower:]可以匹配小写字母a-z
[:print:]与[:graph:]类似,不同之处在于[:print:]包括空格字符
[:punct:]可以匹配标点符号.,""等等
[:space:]可以匹配所有的空字符
[:upper:]可以匹配大写字母A-Z
[:xdigit:]可以匹配十六进制数字0-9、A-F、a-f

这是对前一次匹配命中的一个后引用,其中n是一个正整数 arw(en)1可以匹配arwenen.注意1前面必须是个加括号的子表达式.

  1. regexp_like:

regexp_like(x,pattern[,match_option]),查看x是否与pattern相匹配,该函数还可以提供一个可选的参数match_option字符串说明默认的匹配选项。match_option的取值如下:
‘c’ 说明在进行匹配时区分大小写(缺省值);
'i' 说明在进行匹配时不区分大小写;
'n'(.)点号能表示所有单个字符,包括换行(俺还不知道什么地方有用到换行.只知道sql里面可以用chr(10)表示换行.
'm' 字符串存在换行的时候当作多行处理.这样$就可匹配每行的结尾.不然的话$只匹配字符串最后的位置.

示例:select * from emp where regexp_like(ename,'^a[a-z]*n$');可以查找ename中以a开头以n结尾的行.例如ename为arwen或arwin或anden.但Arwen不能被匹配.因为默认是区分大小写.如果是select * from emp where regexp_like(ename,'^a[a-z]*n$','i')则可以查找ename为Arwen的行记录.

2. regexp_instr:

REGEXP_INSTR(x,pattern[,start[,occurrence[,return_option[, match_option]]]])用于在x中查找pattern。返回pattern在x中出现的位置。匹配位置从1开始。可以参考字符串函数 INSTR(),参数相关:
'start' 开始查找的位置;
'occurrence' 说明应该返回第几次出现pattern的位置;
'return_option' 说明应该返回什么整数。若该参数为0,则说明要返回的整数是x中的一个字符的位置;若该参数为非0的整数,则说明要返回的整数为x中出现在pattern之后 的字符的位置;
'match_option' 修改默认的匹配设置.与regexp_like里面的相同.

示例:

DECLARE

V_RESULTINTEGER;

BEGIN

SELECT REGEXP_INSTR('hello world','o',1,1,0)INTO V_RESULT

FROM DUAL;

DBMS_OUTPUT.PUT_LINE(V_RESULT);

END;

结果为5.即字母o第一个次出现的位置

如果regexp_instr('hello world','o',1,1,n)其中n为除0之外的整数.比如1,3.则结果为6.表示第一次出现字母o的后面一个字符的位置.

如果regexp_instr('hello world','o',1,2,0)则结果为9.表示第二次出现字母o的位置.

3. regexp_replace:

REGEXP_REPLACE(x,pattern[,replace_string[,start[,occurrence[, match_option]]]])用于在x中查找pattern,并将其替换为replae_string。可以参考字符串函数 REPLACE(),参数同REGEXP_INSTR函数

示例:

DECLARE

V_RESULT varchar2(90);

BEGIN

SELECT REGEXP_REPLACE('hello world','o','x',1,1)INTO V_RESULT

  1. FROM DUAL;

DBMS_OUTPUT.PUT_LINE(V_RESULT);

END;

结果为hellx world.

如果REGEXP_REPLACE('hello world','o','x'),则结果为hellx wxrld.

如果 REGEXP_REPLACE('hello w


orld','o','x',1,2)则结果为hello wxrld.

4.regexp_substr:

REGEXP_SUBSTR(x,pattern[,start[,occurrence[, match_option]]])用于在x中查找pattern并返回。可以参考字符串函数 SUBSTR(),参数同REGEXP_INSTR函数.

例如:

DECLARE

V_RESULT VARCHAR2(255);

BEGIN

SELECTREGEXP_SUBSTR('hello world','l{2}')INTO V_RESULT

FROM DUAL;

DBMS_OUTPUT.PUT_LINE(V_RESULT);

END;

结果为ll

查询到匹配的字符串才返回匹配的字符.没查到就返回空.

9. sql查询包含字符串任意字符

1、先把你输入的内容拆分
2、select * from table where name like '%小%' or name like '%明%'
3、出来的结果就是你要的结果

10. 如何用SQL语句判断字符串

select *
from table1
where char1 like '%mystring%'
‘%’表示长度大于等于0的任意字符串,而‘?’可以表示一个字符。

热点内容
ftp保存密码是灰色 发布:2025-01-11 14:00:07 浏览:260
压缩文件最好 发布:2025-01-11 13:59:58 浏览:648
有几家java培训机构 发布:2025-01-11 13:55:05 浏览:475
搭建个人服务器缺点 发布:2025-01-11 13:54:13 浏览:375
怎么用安卓的手机登录ios第五人格 发布:2025-01-11 13:44:11 浏览:768
登陆Ftp重输密码 发布:2025-01-11 13:40:12 浏览:334
解压神器有氧射击 发布:2025-01-11 13:33:04 浏览:853
百度云的好友在哪个文件夹 发布:2025-01-11 13:32:13 浏览:749
2级c语言试题 发布:2025-01-11 13:09:21 浏览:941
rft屏幕代码编译 发布:2025-01-11 12:54:01 浏览:745