你能帮我解决这样的问题吗我有这样的要求
with a as
(
select 1 num, 21 q, 49 b, 100 scq, 155 o, '49 55;' b_ost
union
select 2 num, 21 q, 50 b, 101 scq, 155 o,'50 54;49 55;'
union
select 3 num, 21 q, 48 b, 156 scq, 254 o, '48 98;50 54;49 55;'
union
select 4 num, 21 q, 49 b, 156 scq, 254 o, '49 98;48 98;50 54;49 55;'
union
select 5 num, 21 q, 48 b, 150 scq, 254 o, '48 104;49 98;48 98;50 54;49 55;'
)
select * , PATINDEX('%48 %', b_ost), PATINDEX(b , b_ost) from a
我需要找到b_ost列中b列的第一个位置如果我使用PATINDEX('%48%',b_ost(,则位置计算正确。但我需要使用列b而不是'%48%',如果我将使用PATINDEX(b,b_ost(,则将b放在列b_ost中的位置将为0。通过变量求解是不合适的。请告诉我如何解决我的问题?
假设我正确理解了您的需求,下面的代码就能做到:
select * ,
PATINDEX('%'+ CAST(b AS varchar)+'%', b_ost) from a
它总是返回";1〃;你好心地提供了样品数据,但我对你的样品做了一些修改,效果很好。