2010-08-10 2 views
1

";"이 포함 된 문자열을 검색하려고합니다. 표의 칼럼에서 이상한 결과를 낳습니다.T-SQL - SELECT를 수행 할 때 이상한 결과가 발생했습니다.

결과를 내게 돌려주는 것이 아니라 ";" 또한 ";"을 포함하지 않는 행을 반환합니다. 대신에 '' "을 포함합니다. 여기

내 쿼리입니다 :

 
select * 
from fields 
where Comment like '%;%' 

이며

행 1 & 2 대신 3 개 & 4 기록

어떤 생각의 결과를 반환?

다음 표 구조 및 일부 삽입 문을 참조 용으로 추가합니다. 그 결과가 지금

 
>/****** Object: Table [dbo].[Fields] Script Date: 08/10/2010 14:18:56 ******/ 
SET ANSI_NULLS ON 
GO 

>SET QUOTED_IDENTIFIER ON 
GO 

>SET ANSI_PADDING ON 
GO 

>CREATE TABLE [dbo].[Fields](
    [ID] [int] IDENTITY(1,1) NOT FOR REPLICATION NOT NULL, 
    [Comment] [text] NULL, 
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] 
GO 

>SET ANSI_PADDING OFF 
GO 

>INSERT INTO Fields (Comment) VALUES ('Moody''s Corp') 
Go 

>INSERT INTO Fields (Comment) VALUES ('0% as core business is ex-growth and hasn''t grown in a decade.') 
Go 

>INSERT INTO Fields (Comment) VALUES ('bphivgcofc ;') 
Go 

>INSERT INTO Fields (Comment) VALUES ('Newsflow - recommendations on use of paracetamol. Will probably takeoff EPS; in a worst-case but low probability scenario could be a 3% hit to earnings.') 
Go 

-------가 해결 다를 수 있지만 -----

그 문제는 내가 데이터베이스를 쿼리하는 데 사용하고있는 인터페이스 내 생각합니다. 이 데이터베이스는 외부에서 호스팅되므로 공급자가 해당 데이터에 액세스 할 수있는 인터페이스를 제공했으며 해당 인터페이스에 문제가있는 것으로 보입니다.

여러분의 도움과 제안에 감사드립니다.

+0

사용중인 SQL Server의 버전 및 설명의 데이터 형식은 무엇입니까? SQL Server 2005에서 'VARCHAR', 'NVARCHAR', 'TEXT', 'CHAR'로 테스트 한 결과가 없습니다. – Kashif

+0

@upvoter, 똑같은 문제가 있습니까? 생각을 공유하십시오. – Kashif

+0

SQL Server 2005를 사용하고 있으며 데이터 형식이 텍스트입니다. 그것은 여전히 ​​나를 위해 일하지 않습니다. – TheITGuy

답변

0

나는 데이터베이스에서 쿼리하는 데 사용하는 인터페이스 내에서 문제가 있다고 생각합니다. 이 데이터베이스는 외부에서 호스팅되므로 공급자는 해당 데이터에 액세스 할 수있는 인터페이스를 제공했으며 해당 인터페이스에 문제가있는 것으로 보입니다.

여러분의 도움과 제안에 감사드립니다.

0

소리가 이상합니다. 당신이 당신의 필드 사이

select case when "Moody's Corp, Lowe's Companies, Inc., L'Oreal SA" like '%;%' then 1 end

+0

문제를 해결하기 전에 세부 사항을 다루기 위해 새로운 편집 – TheITGuy

3

혼란 점점 시도
?

의견이 같은 위치에서 LIKE %; %를 (를) 검색 한 다음 회사 이름의 결과를 반환하는 것으로 보입니까? 아마도 그것은 주석이지만 그것은 그렇지 않은 것처럼 보입니다. 아마도 쿼리는 다음과 같아야합니다

select companyName from fields where companyName like '%;%' 

또는

select coment from fields where Comment like '%;%' 

또한 반환 할 필드를 선택, 별표를 사용하지 않습니다. 이 질문은 왜 그렇게해야하는지에 대한 좋은 예입니다! 이러한 상황에서 쉽게 디버깅 할 수 있도록하십시오.

+0

+1을 참조하십시오, 아주 좋아합니다. – Kashif

+0

회사 이름처럼 보이지만 제공된 데이터는 다른 prospactive에서 사용되므로 쿼리와 결과는 괜찮습니다. Astrix는 여기에 샷 컷으로 사용되었지만 실제 응용 프로그램에서는 올바른 필드 이름을 사용합니다. 주석은 텍스트 데이터 유형이므로 사용자는 원하는대로 텍스트를 입력 할 수 있습니다. – TheITGuy

0

먼저 텍스트 데이터 유형을 제거하십시오. 이 기능은 더 이상 사용되지 않으며 최대한 빨리이 모든 인스턴스를 대체해야합니다. 대신 nvarchar (max) 또는 varchar (max)를 사용하십시오.

select 문과 세미콜론을 이스케이프하는 Chryss의 진술로 올바른 결과를 얻을 수 있습니다.

의견 중 하나는 이것이 실제 검색어의 단순화 된 버전이라고 말하면서 문제를 단순화했을 가능성이 있습니까?

+0

좋아, 내가 텍스트 데이터 형식을 제거하고 varchar (최대)로 변환하고 난 여전히 같은 결과를 얻고있다. – TheITGuy

+0

실제 검색어를 게시하십시오. – HLGEM

관련 문제