Tsql T-SQL-当我选择

Tsql T-SQL-当我选择,tsql,Tsql,我试图搜索任何包含的字符串;在表的列中,这会导致一些奇怪的结果 这不仅是返回给我的结果已经;但也返回那些不包含任何内容的行;但却包含了一个' 我的问题是: select * from fields where Comment like '%;%' 返回的结果是 第1行和第2行,而不是第3行和第4行记录 有什么想法吗 我添加了以下表格结构和一些insert语句以供参考。虽然现在结果会有所不同 >/****** Object: Table [dbo].[Fields] Script Date: 0

我试图搜索任何包含的字符串;在表的列中,这会导致一些奇怪的结果

这不仅是返回给我的结果已经;但也返回那些不包含任何内容的行;但却包含了一个'

我的问题是:

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 ----解决---

我认为问题出在我用来查询数据库的接口中。这个数据库是外部托管的,所以提供者给了我们一个接口来访问该数据,而这个接口似乎有问题

谢谢大家的帮助和建议。

听起来很奇怪。试试看


选择Moody's Corp、Lowe's Companys,Inc.和欧莱雅股份有限公司喜欢“%”的情况那么1 end

您是否对您的字段感到困惑

您正在搜索注释相等的位置,如%;%,然后你似乎在返回公司名称的结果?也许这是一个评论,但看起来不是。也许您的问题应该是:

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


也不要使用asterix,选择要返回的字段。这个问题是一个很好的例子,说明你为什么应该这样做!在这些情况下更容易调试。

首先,去掉文本数据类型。这已被弃用,您需要尽快替换所有实例。改用nvarcharmax或varcharmax

我用select语句和Chryss的语句得到了正确的结果,其中她/他转义了分号


您在其中一条评论中说,这是实际查询的简化版本,也许您简化了问题?

我认为这是我用于查询数据库的界面中的问题。这个数据库是外部托管的,所以提供者为我们提供了访问该数据的接口,而该接口似乎存在问题


感谢大家的帮助和建议。

您使用的是哪个版本的SQL Server?评论的数据类型是什么?我在SQLServer2005中使用“VARCHAR”、“NVARCHAR”、“TEXT”、“CHAR”对其进行了测试,但没有结果。@upvoter,您是否也面临同样的问题?请分享您的想法。我使用的是SQL Server 2005,数据类型为文本。它对我仍然不起作用。我刚刚在SQLServer2005中复制粘贴了你的代码,对我来说结果是3,4。我不确定是什么问题,但在一个新的测试数据库中测试你的代码。+1为了在解决问题之前处理好细节,很好,我非常钦佩它。虽然我提供的数据看起来像一个公司名称,但它们被用在不同的propactive中,所以查询和结果都很好。Astrix在这里用作shotcut,但实际应用程序使用正确的字段名。Comments是一种文本数据类型,所以用户可以随意输入任何文本。好的,我去掉了文本数据类型,并转换为varcharmax,我仍然得到相同的结果。
select coment from fields where Comment like '%;%'