我正在尝试搜索包含“;”的任何字符串在表格的一列中,会产生一些奇怪的结果。
这不仅仅归还了“;”的结果但也返回那些不包含任何“;”的行但是包含一个“'”。
这是我的问题:
select * from fields where Comment like '%;%'
并返回结果
第1行& 2而不是3& 4条记录
有什么想法吗?
我正在添加以下表结构和一些insert语句以供参考。虽然现在结果会有所不同
>/****** 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 :(得分:3)
你是否对你的领域感到困惑?
您正在搜索评论等于LIKE%;%,然后您似乎返回公司名称的结果?也许这是一个评论,但它看起来不是。也许您的查询应该是:
select companyName from fields where companyName like '%;%'
或
select coment from fields where Comment like '%;%'
也永远不要使用asterix,选择要返回的字段。这个问题就是为什么你应该这样做的一个很好的例子!在这些情况下更容易调试。
答案 1 :(得分:0)
听起来很奇怪。
试试
select case when "Moody's Corp, Lowe's Companies, Inc., L'Oreal SA" like '%;%' then 1 end
答案 2 :(得分:0)
首先,摆脱text数据类型。这已被弃用,您需要尽快替换此所有实例。请改用nvarchar(max)或varchar(max)。
我使用你的select语句和Chryss的语句得到了正确的结果,她/他逃脱了分号。
您在其中一条评论中说这是您真实查询的简化版本,也许您将问题简化了?
答案 3 :(得分:0)
我认为它是我用于查询数据库的界面中的问题。该数据库是外部托管的,因此提供商为我们提供了访问该数据的界面,并且该界面似乎存在问题。
感谢大家的帮助和建议。