0

JobDetails テーブルにジョブ名列があります。このように

job Name

A_1
A_2
B_1
B_2
B_3

このように最大数を検索します

SELECT MAX(JobDetails.[Job Name])
FROM Monara.JobDetails 
WHERE 
    ( [Job Name] like 'B_%' )

結果はB_3

しかし、私は3つだけを取得したい.

どうすればできますか?

4

3 に答える 3

1

スペースを含む列を作成することを拒否します

アンダースコアは、 Likeを使用するときに慎重に処理する必要があるワイルド文字です。

create table JobDetails ([JobName] varchar(10))
insert JobDetails values('A_1'),('A_2'),('B_1'),('B_2'),('B_3')

SELECT max(cast(stuff(JobName, 1, patindex('%[_]%', JobName), '') as int)) 
FROM JobDetails
WHERE JobName like 'B[_]%'
-- added check to prevent most bad data
and IsNumeric(stuff(JobName, 1, patindex('%[_]%', JobName), '')) > 0
于 2013-11-11T09:21:19.027 に答える
0

このコードを試してください:

SELECT  SUBSTRING(JobDetails.[Job Name],
                  ( SELECT  CHARINDEX('_', JobDetails.[Job Name])
                  ) + 1,
                  LEN(JobDetails.[Job Name]) - 
                  CHARINDEX('_', JobDetails.[Job Name])
                  + 1)
FROM    Monara.JobDetails
WHERE   [Job Name] LIKE 'B_%'
于 2013-11-11T09:09:20.797 に答える
0
SELECT count(JobDetails.[Job Name])
FROM Monara.JobDetails
WHERE [Job Name] like 'B_%'
于 2013-11-11T09:09:31.903 に答える