[SQL] SQL 서버 내에서 와일드 카드를 사용하여
SQLSQL 서버 내에서 와일드 카드를 사용하여
나는 이것이 내가이 질문에 아마 요청 받았다 알고있는 기본적인 질문을해야한다 생각하지만, 이후 나는 그것을 찾을 수 없습니다입니다. 아마 내 또래 집단의 압력 배지를 획득 할에 대해,하지만 난 어쨌든 요청할 것입니다 :
내가 IN을 사용할 때 와일드 카드 문자 % 사용에 대한 인식하지 오전 SQL Server의 방법이있다.
나는 내가 사용 또는처럼 수 있다는 걸 :
select *
from jobdetails
where job_no like '0711%' or job_no like '0712%'
어떤 경우에는 내가 서브 쿼리를 같이 사용할 수 있습니다 :
select *
from jobdetails
where job_no in (select job_no from jobs where job_id = 39)
그러나 나는 다음과 같은 일을 찾고 있어요 :
select *
from jobdetails
where job_no in ('0711%', '0712%')
이 경우에는 문자 대신 행이 반환되도록 와일드 카드 문자로 백분율 기호를 사용합니다. 나는이 작업을 수행해야 할 때 나는 현재 단지 OR의 한 무리를 사용하지만, 나는 더 나은 방법이 있어야한다 알고있다. 당신이 어떤 방법을 사용합니까?
해결법
-
==============================
1.방법에 대해 :
방법에 대해 :
WHERE LEFT(job_no, 4) IN ('0711', '0712', ...)
-
==============================
2.어떻게 이런 일에 대해?
어떻게 이런 일에 대해?
declare @search table ( searchString varchar(10) ) -- add whatever criteria you want... insert into @search select '0711%' union select '0712%' select j.* from jobdetails j join @search s on j.job_no like s.searchString
-
==============================
3.나는이 메시지의 발신자는 간단한 형태로 원하는 것을에 대한 해결책을 가지고 생각합니다. 그것은 나를 위해 작동하고 실제로는 시작하기 내가 여기에 온 이유입니다. 난 그냥 그것을 할 것입니다 관찰 보고서와 함께 '% 텍스트 %'와 같은 열 괄호를 사용하여 생각합니다.
나는이 메시지의 발신자는 간단한 형태로 원하는 것을에 대한 해결책을 가지고 생각합니다. 그것은 나를 위해 작동하고 실제로는 시작하기 내가 여기에 온 이유입니다. 난 그냥 그것을 할 것입니다 관찰 보고서와 함께 '% 텍스트 %'와 같은 열 괄호를 사용하여 생각합니다.
select * from tableName where (sameColumnName like '%findThis%' or sameColumnName like '%andThis%' or sameColumnName like '%thisToo%' or sameColumnName like '%andOneMore%')
-
==============================
4.당신이 뭔가를 시도 할 수 있습니다 :
당신이 뭔가를 시도 할 수 있습니다 :
select * from jobdetails where job_no like '071[12]%'
아니 정확히 당신은 무엇을 요구하고 있지만, 동일한 효과를 가지고 있으며, 너무 다른 방법으로 유연 :)
-
==============================
5.
SELECT c.* FROM( SELECT '071235' AS token UNION ALL SELECT '07113' UNION ALL SELECT '071343' UNION ALL SELECT '0713SA' UNION ALL SELECT '071443') AS c JOIN ( SELECT '0712%' AS pattern UNION ALL SELECT '0711%' UNION ALL SELECT '071343') AS d ON c.token LIKE d.pattern 071235 07113 071343
-
==============================
6.나는 비슷한 목표를 가지고 있었다 - 그리고이 솔루션에 온 :
나는 비슷한 목표를 가지고 있었다 - 그리고이 솔루션에 온 :
select * from jobdetails as JD where not exists ( select code from table_of_codes as TC where JD.job_no like TC.code )
나는 %를 포함하여 다양한 코드 ( '0,711퍼센트', '0,712퍼센트', 등), 필드 코드로, 내가 * table_of_codes가 * 전화 했어있는 테이블에 저장되어 있다고 가정하고있다.
이 %가 코드의 테이블에 저장되어 있지 않은 경우, 그냥 '%'를 연결하여. 예를 들면 :
select * from jobdetails as JD where not exists ( select code from table_of_codes as TC where JD.job_no like concat(TC.code, '%') )
CONCAT 연 () 함수는 내가 아는 한, 특정 데이터베이스에 따라 달라질 수 있습니다.
나는 그것이 도움이되기를 바랍니다. 나는 그것을에서 적응 :
http://us.generation-nt.com/answer/subquery-wildcards-help-199505721.html
-
==============================
7.여기 내가 사용하는 스크립트입니다 :
여기 내가 사용하는 스크립트입니다 :
Drop Table #UserMasks Drop Table #TESTUserMasks Create Table #TESTUserMasks ( [User] [Int] NOT NULL, [Mask] [Nvarchar](10) NOT NULL) Create Table #UserMasks ( [RN] [Int] NOT NULL, [Mask] [Nvarchar](10) NOT NULL) DECLARE @User INT SET @User = 74054 Insert Into #UserMasks select ROW_NUMBER() OVER ( PARTITION BY ProntoUserID ORDER BY Id DESC) AS RN, REPLACE(mask,'?','') Mask from dbo.Access_Masks where prontouserid = @User DECLARE @TopFlag INT SET @TopFlag = 1 WHILE (@TopFlag <=(select COUNT(*) from #UserMasks)) BEGIN Insert Into #TestUserMasks select (@User),Code from dbo.MaskArrayLookupTable where code like (select Mask + '%' from #UserMasks Where RN = @TopFlag) SET @TopFlag = @TopFlag + 1 END GO select * from #TESTUserMasks
-
==============================
8.제레미 스미스가 그것을 게시 된 나는 그의의 특정 질문에 대답 할 수 있기 때문에, 나는, 정리해 것이다.
제레미 스미스가 그것을 게시 된 나는 그의의 특정 질문에 대답 할 수 있기 때문에, 나는, 정리해 것이다.
select * from jobdetails where job_no like '071[1-2]%'
그냥 0,711% 및 0,712퍼센트이 필요한 경우에는 괄호 안에 범위를 배치 할 수 있습니다. (가) NOT 키워드를 위해 당신은 또한 [^ 1-2] %를 사용할 수 있습니다
-
==============================
9.IN 연산자는 아무것도하지만 멋진 OR '='비교하지 않습니다. 사실이 목록은 10,000 항목에 대해 포함 된 경우 SQL 2000에 의한 관찰 보고서에 IN의 확장에 스택 오버 플로우 버그가 있음 '아무것도하지만이'너무 없습니다 (예, 항목의 10K를 쓰는 사람들이 ...있다). 그래서 당신은 그것에서 와일드 카드 매칭을 사용할 수 없습니다.
IN 연산자는 아무것도하지만 멋진 OR '='비교하지 않습니다. 사실이 목록은 10,000 항목에 대해 포함 된 경우 SQL 2000에 의한 관찰 보고서에 IN의 확장에 스택 오버 플로우 버그가 있음 '아무것도하지만이'너무 없습니다 (예, 항목의 10K를 쓰는 사람들이 ...있다). 그래서 당신은 그것에서 와일드 카드 매칭을 사용할 수 없습니다.
-
==============================
10.액세스 SQL에서, 나는 이것을 사용합니다. 나는 SQLSERVER이 같은 구문이 상상 것입니다.
액세스 SQL에서, 나는 이것을 사용합니다. 나는 SQLSERVER이 같은 구문이 상상 것입니다.
고르다 * jobdetails에서 여기서 같은 "0711 *"와 같은 job_no 또는 job_no "0712 *"
-
==============================
11.당신은 당신의 질문에 정답이있다. IN을 사용할 때 직접 와일드 카드 전달할 수 없습니다. 그러나 하위 쿼리를 사용할 수 있습니다.
당신은 당신의 질문에 정답이있다. IN을 사용할 때 직접 와일드 카드 전달할 수 없습니다. 그러나 하위 쿼리를 사용할 수 있습니다.
이 시도:
select * from jobdetails where job_no in ( select job_no from jobdetails where job_no like '0711%' or job_no like '0712%') )
난 그냥 사용에 또는 당신의 WHERE 절에 충실 수있는, 즉이 외모 미친 알고있다. 왜 서브 쿼리? 다른 소스에서 세부 사항을 일치해야 할 때 어떻게 지금, 서브 쿼리의 접근 방식은 유용 할 것이다.
주권
-
==============================
12.이 시도
이 시도
select * from jobdetails where job_no between '0711' and '0713'
유일한 문제는 그 일 '0713'가 아니라 반환 될 것입니다 그래서 '07299999999999'를 사용하거나 '0713'를 추가하고 job_no <>
및 zamir
-
==============================
13.이 힘 나와있는 같은 가장 간단한 솔루션 사용
이 힘 나와있는 같은 가장 간단한 솔루션 사용
select * from jobdetails where job_no like any ('0711%', '0712%')
테라 데이타 이것은 잘 작동합니다.
from https://stackoverflow.com/questions/1076097/sql-server-using-wildcard-within-in by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 어떻게 SQL Server 2005의 테이블에 NTEXT 필드에 유니 코드 / 비 ASCII 문자를 찾을 수 있습니까? (0) | 2020.06.05 |
---|---|
[SQL] 우리는 다른 테이블의 기본 키가 아닌 외부 키를 가질 수있다? (0) | 2020.06.05 |
[SQL] 어떤 SQL 문은 빠르다? (대 WHERE 음 ...) (0) | 2020.06.05 |
[SQL] 어떻게 테이블에서 최대 값을 가지는 오라클 시퀀스 시작을 만드는 방법? (0) | 2020.06.05 |
[SQL] 는 SQL Server의 알터 사용자 정의 유형 (0) | 2020.06.05 |