2

列の一部を選択するためのクエリを誰かが手伝ってくれるかどうか疑問に思っていました。

列「criteriadata」には、次のようなデータが含まれています。

基準データ

14 27 15 ℃

14 30 15 DD

14 38 15 合格

14 33 15 合格

数字の 15 の後に表示されるデータだけを選択するにはどうすればよいですか。

どうもありがとう。

4

11 に答える 11

5
SELECT RIGHT(CriteriaData, 
             LEN(CriteriaData) - CHARINDEX('15', CriteriaData, 1) - 2)
FROM TableName
WHERE CriteriaData LIKE '%15%';

SQL フィドルのデモ

于 2012-11-06T14:50:25.453 に答える
3
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
于 2012-11-06T14:54:21.793 に答える
3

CriteriaCDataスペースで区切られた 2 つの数字の 3 つの数字のパターンが常に含まれている場合は、常に 10 番目の文字から取得する必要があります。

select SUBSTR(CriteriaCData, 10) from xxx

oracle min 10.g を使用している場合は、REGEXP_SUBSTR を使用してアルファ パターンを取得します。

SELECT upper(REGEXP_SUBSTR(CriteriaCData, '[a-zA-Z]*$')) FROM xxx
于 2012-11-06T14:56:10.807 に答える
1

オラクルでは、LEN の代わりに LENGTH を使用します。

SELECT substr(CriteriaData, 8, LENGTH(CriteriaData) - 9) from table
于 2014-01-03T13:47:03.767 に答える
1

9文字目以降は全部欲しいみたいなのでRIGHTLEN

SELECT right([CriteriaData], len([CriteriaData]) - 9)

ただし、データを正規化して、すでに別の列にある方がよいでしょう。

于 2012-11-06T15:02:24.050 に答える
0

条件をスペースで分割する SQL 関数を作成し、最後のスペースの後に最後に残った値を使用しました。

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
于 2012-11-06T15:03:10.137 に答える
0
SELECT 
  RIGHT(CriteriaData, LEN(CriteriaData) - (CHARINDEX('15', CriteriaData, 1) - 2)) 
FROM 
  MyTable;
于 2012-11-06T14:51:50.730 に答える
0
Declare @x nvarchar(100) = '14 30 15 DD';    
Select substring(@x, (select charindex('15',@x,1) + 2) ,len(@x));
于 2012-11-06T15:02:14.507 に答える
0

SELECT substring(criteriadata, 9, LEN(criteriadata)-8) from table

これは、15 の位置が固定されていることを前提としています。

于 2012-11-06T14:49:10.250 に答える
0

左の関数で部分文字列を使用する必要があります

これを見てください: SQL Server でこの特定の部分文字列を抽出する方法は?

そしてこれ:http://msdn.microsoft.com/en-us/library/aa259342(v=sql.80).aspx

于 2012-11-06T14:51:20.420 に答える