1

SQL レパートリーにストアド プロシージャの記述を追加し始めたばかりですが、これは初歩的な質問だと確信しています。このシナリオで演算like子の代わりに演算子を使用する方法について、誰かが私を正しい方向に向けることができますか? =この目的は、潜在的な 5 桁の数字から最初の 3 つの一般的な数字を見つけることです。

ストアド プロシージャ:

create proc dbo.MultipleDrugs (@condition varchar(50))
as
SELECT  *, 100.0 * round(SUM(numwithanxiety) OVER (partition BY sex) / cast(TotalSexCounts AS float), 4) overAllPercentByGender
FROM (SELECT x.sex, injurylevel, SUM(sexandlevelcounts) OVER (partition BY x.sex) numByInjury, sum(sexandlevelcounts) AS numWithAnxiety, 
      100.0 * round(cast(sexandlevelcounts AS float) / SUM(sexandlevelcounts) OVER (partition BY x.sex), 4) AS percentWith, y.TotalSexCounts
      FROM (SELECT sex, injurylevel, COUNT(*) AS sexAndLevelCounts
             FROM (SELECT DISTINCT m.patid, m.sex, m.injurylevel
              FROM  members AS m INNER JOIN
               icdClm AS ic ON ic.patid = m.PATID
               --*****when I leave this operator as like and use
               --*****equals in the exec statement it works
               WHERE ic.icd LIKE @condition) t
              GROUP BY sex, injurylevel) x INNER JOIN
              (SELECT m.sex, COUNT(DISTINCT patid) TotalSexCounts
                FROM members m
                GROUP BY m.sex) y ON y.sex = x.sex
               GROUP BY x.sex, x.injuryLevel, x.sexAndLevelCounts, y.TotalSexCounts) rr
 go

likeこれは実行されますが、演算子を使用できません

exec dbo.MultipleDrugs  N'70700'

これは私がやりたいことです

exec dbo.MultipleDrugs  like '707%'
4

4 に答える 4

2
exec dbo.MultipleDrugs N'707%'
于 2012-11-26T21:17:15.967 に答える
1

LIKEexec 呼び出しで演算子を提供する必要はありません。既にlikeSPROC を取得しています。代わりに、より単純なケースを考えてみましょう:

create proc FindObjects @Name NVARCHAR(50)
as
    select * 
        from sys.objects
        where name like @Name

そして、これを呼び出します:

exec FindObjects 'sys%'     

戻り値

sysrscols
sysrowsets
sysallocunits
sysfiles1
syspriorities
sysfgfrag

于 2012-11-26T21:19:30.173 に答える
0

次のようになるように SP を変更します。

LIKE '%' + @condition + '%'
于 2012-11-26T21:14:19.840 に答える
0

手順でこのように使用することもできます。set @SearchString='%'+ @SearchString + '%'

于 2014-04-08T11:57:50.953 に答える