SQL 特殊字符位置

SQL 特殊字符位置,第1张

DECLARE @str VARCHAR(150)

declare @result table(indexOfArisk int)

declare @strResult int

set @strResult = 0

SET @str='1001200223003334004444500555556677'

while (charindex( '', @str) != 0)

begin

set @strResult = @strResult + charindex( '', @str)

insert into @result values(@strResult)

set @str = Substring(@str, charindex('', @str) + 1, len(@str))

end

select from @result

这个查询能得到所有的位置,根据你的需要获取吧。

Wish it helps

instr( string1, string2 [, start_position [, nth_appearance ] ] )

string1源字符,要在此字符串中查找。

string2要在string1中查找的字符串

start_position 代表string1 的哪个位置开始查找。默认为1 字符串索引从1开始。如果此参数为正,从左到右开始检索,如果此参数为负,从右到左检索,返回要查找的字符串在源字符串中的开始索引。

nth_appearance 代表要查找第几次出现的string2 此参数可选,如果省略,默认为 1如果为负数系统会报错。

length 函数

substr函数配合就可以你想要的功能了

我要说一句,连PL/SQL都不知道的也能给推荐?

请推荐的人不要只为了完成任务而推荐,为网友,为知道负点责好吗?

如果是C#,直接split+length就可以得到结果,人家要的是PL/SQL

PL/SQL是Oracle数据库对SQL语句的扩展, Oracle中有Instr函数,可以找到某个字符串在某个表达式中的位置,但是只是第一次出现的位置,如果想找出所有的位置,只能写个函数了。

下面是我写的函数:

CREATE OR REPLACE FUNCTION GetCharNumbers (pStr IN VARCHAR2, pSplit IN VARCHAR2) RETURN VARCHAR2 IS

vTempStr VARCHAR2(200);

vReturnStr VARCHAR2(200);

vPost NUMBER;

vTotal NUMBER;

BEGIN

vPost := 0;

vTotal := 0;

vTempStr := pStr;

vReturnStr := null;

WHILE INSTR(vTempStr, pSplit) > 0 LOOP

vPost := INSTR(vTempStr, pSplit);

vTotal := vTotal + vPost;

IF vReturnStr IS NOT NULL THEN

vReturnStr := vReturnStr || ', ';

END IF;

vReturnStr := vReturnStr || TO_CHAR(vTotal);

vTempStr := SUBSTR(vTempStr,vPost+1);

END LOOP;

RETURN vReturnStr;

END;

用法 select GetCharNumbers('ljdkj1231,123,flskdf,dfjalskdfja,12e',',') from dual

反回结果:

10, 14, 21, 33

常用的字符串函数,其作用可分为四大类:串接字符、截取字符、转换字符、其他作用的字符函数。

串接,就是把单独的字符串组合为一个。如把人的姓和名串接在一起形成一个完整的姓名字符串。

截取,是指从字符串里提取出一部分字符,形成子串。可以分为截取字符、提取字符的位置。

转换,是指把一个字符串中的内容或形式变换成另一个内容或形式。分为内容转换和形式转换。

其他作用的字符函数:以上三种作用之外的其他字符函数。

下面详细介绍。

串接函数

可以通过+或者-,实现串接 *** 作。在不同的数据库管理系统中,使用的串接符号不同。

在SQL SERVER中的代码为:SELECT ‘JOHN’+ ‘SON’

在MySQL中的代码为:SELECT CONCAT(‘JHON’,‘SON’)

截取函数

1、SUBSTR(COLUMN NAME,STARING POSITION,LENGTH)

COLUMN NAME:字段名称

STARING POSITION:起始位置,即从第几个字符开始截取

LENGTH:长度,即截取多少个字符的长度

select emp_id,substr(emp_id,1,3) from employee

从雇员表中检索出雇员编号,雇员姓名两个字段。其中雇员姓名可通过从编号ID的前三个字符截取得到。

2、TRIM()、LTRIM()、RTRIM(),剪除字符串中的字符。

SQL 中的 TRIM 函数是用来移除掉一个字串中的字头或字尾。最常见的用途是移除字首或字尾的空白。这个函数在不同的资料库中有不同的名称:

MySQL: TRIM( ), RTRIM( ), LTRIM( )

Oracle: RTRIM( ), LTRIM( )

SQL Server: RTRIM( ), LTRIM( )

各种 trim 函数的语法如下:

TRIM ( [ [位置] [要移除的字串] FROM ] 字串): [位置] 的可能值为 LEADING (起头), TRAILING (结尾), or BOTH (起头及结尾)。 这个函数将把 [要移除的字串] 从字串的起头、结尾,或是起头及结尾移除。如果我们没有列出 [要移除的字串] 是什么的话,那空白就会被移除。

LTRIM(字串): 将所有字串起头的空白移除。

RTRIM(字串): 将所有字串结尾的空白移除

以上就是关于SQL 特殊字符位置全部的内容,包括:SQL 特殊字符位置、SQL 如何获取字符串最后一位是"。"号的位置、PL/SQL取字符串子串位置的算法。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9483961.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存