T-SQL - странные результаты, когда я делаю SELECT - PullRequest
1 голос
/ 10 августа 2010

Я пытаюсь найти любую строку, содержащую ";" в столбце таблицы, которая приводит к странным результатам.

Это не только возвращает мне результаты, которые имеют ";" но также возвращает те строки, которые не содержат ";" но вместо этого содержит "'".

Вот мой запрос:

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

------- решено -----

Я думаю, что проблема в интерфейсе, который я использую для запроса к базе данных. Эта база данных размещена снаружи, поэтому поставщик предоставил нам интерфейс для доступа к этим данным, и, похоже, в этом интерфейсе есть проблема.

Спасибо всем за помощь и предложения.

Ответы [ 4 ]

3 голосов
/ 10 августа 2010

Вы путаетесь между своими полями?

Вы ищете, где комментарии равны LIKE%;%, а затем вы возвращаете результат названия компании? Возможно, это комментарий, но похоже, что это не так. Возможно, ваш запрос должен быть:

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

или

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

Также никогда не используйте звездочку, выберите поля, которые вы хотите вернуть. Этот вопрос является хорошим примером того, почему вы должны это сделать! Упростите отладку в этих обстоятельствах.

0 голосов
/ 10 августа 2010

Я думаю, что это проблема в интерфейсе, который я использую для запроса к базе данных.Эта база данных размещена снаружи, поэтому провайдер предоставил нам интерфейс для доступа к этим данным, и, похоже, в этом интерфейсе есть проблема.

Спасибо за помощь и предложения всем.

0 голосов
/ 10 августа 2010

Перво-наперво, избавьтесь от типа данных text.Это устарело, и вы должны заменить все экземпляры как можно скорее.Вместо этого используйте nvarchar (max) или varchar (max).

Я получаю правильные результаты с вашим утверждением select и с заявлением Chryss, где она / он избегает точки с запятой.

Вы говорите в одном из комментариев, что это упрощенная версия вашего реального запроса, возможно, вы упростили проблему?

0 голосов
/ 10 августа 2010

Звучит странно.
Попробуйте

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...