SQL字符串比较
发布网友
发布时间:2022-04-22 05:47
我来回答
共5个回答
热心网友
时间:2022-04-10 12:23
要学会先搜索
以使用instr函数对某个字符串进行判断,判断其是否含有指定的字符。
其语法为:
instr(sourceString,destString,start,appearPosition). instr('源字符串' , '目标字符串' ,'开始位置','第几次出现')
其中sourceString代表源字符串;
destString代表想聪源字符串中查找的子串;
start代表查找的开始位置,该参数可选的,默认为1;
appearPosition代表想从源字符中查找出第几次出现的destString,该参数也是可选的,默认为1;
如果start的值为负数,那么代表从右往左进行查找,但是位置数据仍然从左向右计算。
返回值为:查找到的字符串的位置。
对于instr函数,我们经常这样使用:从一个字符串中查找指定子串的位置。例如:
SQL> select instr('yuechaotianyuechao','ao') position from al;
POSITION
----------
6
从第7个字符开始搜索
SQL> select instr('yuechaotianyuechao','ao', 7) position from al;
POSITION
----------
17
从第1个字符开始,搜索第2次出现子串的位置
SQL> select instr('yuechaotianyuechao','ao', 1, 2) position from al;
POSITION
----------
17
注意:1。若‘起始位置’=0 时返回结果为0,
2。这里只有三个参数,意思是查找第一个要查找字符的位置(因为 ‘第几次出现’默认为1),
当‘起始位置’不大于要查找的第一个字符的位置时,返回的值都将是第一个字符的位置,如果‘起始位置’大于要查找的第一个字符的位置时,返回的值都将是第2个字符的位置,依此类推……(但是也是以第一个字符开始计数)追问谢谢您的回答。这个 比较我知道的,,现在有个问题我不知道怎样去处理。如果 a:35 b:62,35 那么就很容易的判断出 a是包含在b中的。如果 a也是一个比较复杂的字符串 如:a:35,62,85 而 b:68,35,69 那么 用 instr 函数去判断的时候,就不能判断出是不是包含了。
追答这个判断是把a整体放到b里面去检测的。除非先截取。
热心网友
时间:2022-04-10 13:41
创建一个存储过程,创建两个参数:@a,@b,用函数charindex进行比较,如果@a中有@b相同字符,就放回在第几个字符数,否则就返回0。
CREATE PROCEDURE [CHAR]
@a varchar(20),@b varchar(20)
AS
begin
select charindex(@a,@b,1)
end
GO
热心网友
时间:2022-04-10 15:16
-----你这么写试试
select * from A where exists (select * from B )
热心网友
时间:2022-04-10 17:07
select * from POR1 where itemcode exists (select itemcode from RDR1)
另外,团IDC网上有许多产品团购,便宜有口碑
热心网友
时间:2022-04-10 19:15
是a中的一个字符还是几个字符包含在b中,还有你要用什么方法,是直接用sql语句判断,还是在程序中判断追问直接在SQL语句中判断。b的值是直接传值过来的,a的值是事先设定好的。如果a中有一个字符包含在b中,那么就把该字符给筛选出来。
追答只有写个函数算出来,用循环取出a的每一个字符去和b比较,可以从下面这个函数演变
CREATE OR REPLACE FUNCTION TRIM_CHARS (theStr IN VARCHAR2) RETURN VARCHAR2
IS
rtVal VARCHAR2(4000);
CURR_CHAR VARCHAR2(2);
STR VARCHAR2(4000);
BEGIN
rtVal:= ' ';
STR:=theStr;
IF STR IS NOT NULL THEN
FOR i IN 1..LENGTH(STR) LOOP
CURR_CHAR:=SUBSTR(STR,i,1);
IF LENGTHB(CURR_CHAR)=1 THEN
rtVal:=rtVal || CURR_CHAR;
END IF;
END LOOP;
END IF;
RETURN rtVal;
EXCEPTION
WHEN OTHERS THEN RETURN NULL;
END;
这个函数就是把一个数字+汉字的字符串传进去,返回纯数字
sql中比较一个字符串中是否含有另一个字符串中的一个字符
sql中比较一个字符串中是否含有另一个字符或字符串可用charindex函数。 如: 1 select charindex('爱','我爱祖国') 结果为: 返回值2为“爱”在“我爱祖国”中的位置。 如: 1 select charindex('a','我爱祖国') 结果为: 返回值为0,则代表“a”不存在于“我爱祖国”字符串中。 语法: CHARINDEX ( expre...
在sql中字符串怎么与数值类型比较
Oracle比较字符串是根据ASCII码来的,第一个字母的ASCII大小比较如果相等再比较下一个,类推。字符串和数字进行操作是会报异常的,因为类型不一样不能进行比较。Oracle在执行SQL的时候有些时候会自动转换,比如:select * from chan_customer cc where cc.customer_id = '1';即使customer_id是数字型的...
SQL 中字符串对比,并获取出不重复值
把你有重复值的字段group by 一下就ok了。中文字符串比对用like吧。select a.name from table a where a.name like '%黄世仁%' group by a.name
sql怎样判断两字符串完全相等,大小写一样?
1,sql怎样判断两字符串完全相等,大小写一样 2,比较前把这两个变更打印出来看一下。比较简单也比较好操作。
SQL Server字符串区别大小写方法
在SQL Server中默认对大小写是不敏感的 例如userName= jesse 和userName= JESSE 结果是一样的 在验证密码的时候可能就需要对字符串大小写敏感 需要做一些处理 介绍两种方法 法Ⅰ 转换成二进制再比较 由于大小写的ASC码不同 例如 select from T_User where cast(field as varbinary) = cast( Admin ...
用SQL语句截取字符串!并比较大小!!
select substring(日期,5,2)from 表名 取出来的那个就是你说的06和07了,然后再比较
SQL字符串比较
其语法为:instr(sourceString,destString,start,appearPosition). instr('源字符串' , '目标字符串' ,'开始位置','第几次出现')其中sourceString代表源字符串;destString代表想聪源字符串中查找的子串;start代表查找的开始位置,该参数可选的,默认为1;appearPosition代表想从源字符中查找出第...
sql怎样判断两字符串完全相等,大小写一样?
方法1: where cast(password as varbinary) = cast( 'abc' as varbinary)方法2:where password collate Chinese_PRC_CS_AS_WS ='abc'注:方法1是转换成二进制再比较,由于大小写的ASC码不同所以区分大小写 方法2是利用排序规则,也是基于二进制。在字段后加上collate Chinese...
sql数字字符串可以比较大小吗
目测是oracle?Oracle比较字符串是根据ASCII码来的,第一个字母的ASCII大小比较如果相等再比较下一个,类推 Oracle在执行SQL的时候有些时候会自动转换 为了验证oracle里字符串比较是按ascii码来比较的 ,做一个简单的验证例子。select ascii('a'),ascii('888') from dual;...
在sql中两个中文字符串怎么判断相似百分比
LD算法又成为编辑距离算法,他是以字符串A通过插入字符、删除字符、替换字符变成另一个字符串B,那么操作的过程的次数表示两个字符串的差异 以下是SQL版本的LD算法代码 Create Function [dbo].[LD](@Str1 Varchar(8000),@Str2 Varchar(8000))Returns Numeric(18,3)As Begin Declare @I int Declare ...