PostgreSQL判斷字串包含的幾種方法

2021-10-18 15:35:30 字數 2257 閱讀 3478

1. position(substring in string):

postgres=

# select position('aa' in 'abcd');

position

----------0(

1row

)postgres=

# select position('ab' in 'abcd');

position

----------1(

1row

)postgres=

# select position('ab' in 'abcdab');

position

----------1(

1row

)1234567891011121314151617

可以看出,如果包含目標字串,會返回目標字串笫一次出現的位置,可以根據返回值是否大於0來判斷是否包含目標字串。

2. strpos(string, substring): 該函式的作用是宣告子串的位置。

postgres=

# select strpos('abcd','aa');

strpos

--------0(

1row

)postgres=

# select strpos('abcd','ab');

strpos

--------1(

1row

)postgres=

# select strpos('abcdab','ab');

strpos

--------1(

1row

)1234567891011121314151617

作用與position函式一致。

3. 使用正規表示式:

postgres=

# select 'abcd' ~ 'aa';

?column?

---------- f(

1row

)postgres=

# select 'abcd' ~ 'ab';

?column?

---------- t(

1row

)postgres=

# select 'abcdab' ~ 'ab';

?column?

---------- t(

1row

)1234567891011121314151617

4. 使用陣列的@>操作符(不能準確判斷是否包含):

postgres=

# select regexp_split_to_array('abcd','') @> array['b','e'];

?column?

---------- f(

1row

)postgres=

# select regexp_split_to_array('abcd','') @> array['a','b'];

?column?

---------- t(

1row

)1234567891011

注意下面這些例子:

postgres=

# select regexp_split_to_array('abcd','') @> array['a','a'];

?column?

---------- t(

1row

)postgres=

# select regexp_split_to_array('abcd','') @> array['a','c'];

?column?

---------- t(

1row

)postgres=

# select regexp_split_to_array('abcd','') @> array['a','c','a','c'];

?column?

---------- t(

1row

)1234567891011121314151617

可以看出,陣列的包含操作符判斷的時候不管順序、重複,只要包含了就返回true,在真正使用的時候注意。

**:

PostgreSQL字串處理函式

史上最全it資源,個人收藏總結!前期準備,新建資料表 create table mytable id serial not null,name character varying 20 geom geometry,remark character varying 255 插入資料 insert in...

字串判斷

總時間限制 1000ms 記憶體限制 65536kb 描述 判斷兩個由大小寫字母和空格組成的字串在忽略大小寫,且忽略空格後是否相等。輸入兩行,每行包含乙個字串。輸出若兩個字串相等,輸出yes,否則輸出no。樣例輸入 a a bb bb ccc ccc aa bbbb cccccc樣例輸出 yes思路...

判斷字串

python hello world print str.isalnum 判斷所有字元都是數字或者字母 print str.isalpha 判斷所有字元都是字母 print str.isdigit 判斷所有字元都是數字 print str.islower 判斷所有字元都是小寫 print str.i...