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つだけを取得したい.
どうすればできますか?
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つだけを取得したい.
どうすればできますか?
スペースを含む列を作成することを拒否します
アンダースコアは、 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
このコードを試してください:
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_%'
SELECT count(JobDetails.[Job Name])
FROM Monara.JobDetails
WHERE [Job Name] like 'B_%'