我想知道是否有人可以帮助查询选择列的一部分。
“criteriadata”列包含如下所示的数据:
CriteriaData
14 27 15 C.
14 30 15 DD
14 38 15通行证
14 33 15通行证
如何仅选择数字15后面显示的数据。
非常感谢。
SELECT RIGHT(CriteriaData,
LEN(CriteriaData) - CHARINDEX('15', CriteriaData, 1) - 2)
FROM TableName
WHERE CriteriaData LIKE '%15%';
create function dbo.getCriteria
(
@criteria varchar(500)
)
returns varchar(500)
begin
declare @space as int
select @space=charindex(' ', data) from mydata
while @space > 0
begin
set @criteria=substring(@criteria, @space + 1, len(@criteria))
select @space=charindex(' ', @criteria)
end
return @criteria
end
select dbo.getCriteria(data) from mydata
由于我无法使先前的答案工作,我必须找到自己的,并为未来的参考数字我将它留在Stack Overflow上。我的字段有XML但它是一个NVarchar字段,如果你对左右边界字符串有一个明确的标准,那么它应该很好地概括。
这不是这个问题的完全匹配,但我希望它可以帮助其他人在他们的专栏中拥有巨大的字符串并且需要剪掉一个在两个人之间变化的字符串!
SELECT
RIGHT(CriteriaData, LEN(CriteriaData) - (CHARINDEX('15', CriteriaData, 1) - 2))
FROM
MyTable;
declare @T table
(
CriteriaData varchar(20)
)
insert into @T values
('14 27 15 C'),
('14 30 15 DD'),
('14 38 15 Pass'),
('14 33 15 Pass')
select stuff(CriteriaData, 1, 3+charindex(' 15 ', CriteriaData), '')
from @T
结果:
---------
C
DD
Pass
Pass
如果qazxsw poi总是包含由空格分隔的3个数字的2个数字的模式,那么您总是希望从第10个字符中检索:
CriteriaCData
如果你在oracle min 10.g下,那么使用REGEXP_SUBSTR来检索alpha模式
select SUBSTR(CriteriaCData, 10) from xxx
在oracle上使用LENGTH而不是LEN
SELECT right([CriteriaData], len([CriteriaData]) - 9)
您应该使用带左函数的子字符串
看看这个:SELECT substr(CriteriaData, 8, LENGTH(CriteriaData) - 9) from table
SELECT substring(criteriadata, 9, LEN(criteriadata)-8) from table
我创建了一个SQL函数分裂由空间的条件,且最后空间后最后使用的剩余价值。
Declare @x nvarchar(100) = '14 30 15 DD';
Select substring(@x, (select charindex('15',@x,1) + 2) ,len(@x));