sqlsever查詢a字段值是否包含b字段值中的1個或多個關鍵詞 b字段值是以 分隔的字串 ?

時間 2022-01-05 08:08:37

1樓:沈亮

-- # 1 PATINDEX 支援"正則"

-- 如:'%[0-9]%'、'%[^0-9]%'、'%[^0-9a-z]%'

SELECT

DISTINCT

data

FROM

-- SELECT value,data FROM

(SELECT

'123|56|89'

data

UNION

SELECT

'123|er|89'

data

UNION

SELECT

'abd|ehg|89'

data

UNION

SELECT

'abd|ehg|lju'

data)A

CROSS

STRING_SPLIT

(data

,'|'

)WHERE

PATINDEX

('%[0-9]%'

,value

)>=1/*

data

123|56|89

123|er|89

abd|ehg|89

*/PATINDEX (Transact-SQL) - SQL Server

-- #3 STRING_SPLIT適用於2016及以上版本,詳見:

-- # 4補充: 通過LIKE 限定資料是類似: 1.10/r.ry.2.134 型資料

SELECT

PATINDEX

('%[/.]%'

,val

)parstr

,-- 匹配/或者.

valFROM

(SELECT

'134.1145/2939753.234'

valUNION

SELECT

'a1145.abc./2939753.234'

valUNION

SELECT

'10.1016/j.cor.2019.104840'

valUNION

SELECT

'10 1016. 2019 104840'

valUNION

SELECT

'10.1016/22.cor.2019.104840'

valUNION

SELECT

'1.10/r.ry.2.1'

val)

AWHERE

valLIKE

'[0-9]%[.][0-9]%[/][a-z][.][a-z]%[.][0-9]%[.][0-9]%'

/*parstr val

2 1.10/r.ry.2.1

3 10.1016/j.cor.2019.104840*/

2樓:不剪髮的Tony老師

SQL Server可以用以下方法:

CREATE

TABLEt(

avarchar(10

),bvarchar(10

));INSERT

INTO

tVALUES

('0123456789'

,'123|56|89'

);INSERT

INTO

tVALUES

('0123456789'

,'125|06|88'

);SELECTa,

b,value

FROM

tCROSS

STRING_SPLIT(b

,'|');a

|b|value

|0123456789

|123|56

|89|123

|0123456789

|123|56

|89|56

|0123456789

|123|56

|89|89

|0123456789

|125

|056|88

|125

|0123456789

|125

|056|88

|056

|0123456789

|125

|056|88

|88|SELECT

DISTINCTa,

bFROM

tCROSS

STRING_SPLIT(b

,'|'

)WHERE

aLIKE

CONCAT

('%'

,value

,'%');a

|b|0123456789

|123|56

|89|另外,MySQL中正確的寫法是:

select

*from

twhere

REGEXP_LIKE(a

,b);select

*from

twhere

aREGEXPb;

求教SQL面試題目 單張表查詢某字段排在第二或第n 1問題?

查詢第幾名篩選前幾的數值,然後公升序排練。篩選出公升序排練第一名的學生的數學成績再根據這個成績去篩選出符合這個數學成績的學生名字。 明天依燃 菜鳥剛學習,試著做了一下 第乙個 SELECT Top 1 FROM SELECT FROM CHENGJI11 WHERE course 數學 dORDER...

c語言怎麼查詢陣列中最大值和最小置的位置?

心若止水 第一 通過遍歷陣列查詢陣列中最大和最小值得位置。第二 每當遍歷乙個節點,就拿這個節點的值和當前最大和最小值比較,如果此節點的值小於最小值或者此節點的值大於最大值,那麼就替換當前最大或者最小值。第三 在這裡需要宣告一下,一開始初始化最大值或者最小值一定是陣列中的元素之,如果不是陣列中的值可能...

關係型資料庫中的字段預設值 不可為空 唯一索引約束的好處和壞處是什麼?

我覺得這個跟具體的程式,具體的業務邏輯有關係。我自己設計表的時候,設定字段預設值,一般是為了防止在寫插入語句時少寫了幾個在之後的查詢時要用的字段。而設定了預設值之後,在前面的程式裡插入時還可以偷懶少寫點內容。不可為空和唯一性約束也類似,多數時候是因為業務邏輯要求不能為空或者不能重複。壞處嘛,預設值和...