2017-08-30 94 views
0

我正在尝试在Microsoft SQL Server管理工作室中执行select语句。数据是这样的:SQL select语句,我正在查找的文本有单引号

snapshot of data

我的select语句是:

SELECT * FROM OSUSR_W7I_INVENTORYCHANGELOG 
WHERE OBJECTTYPEID = 3 
and CREATEDBY is null 
and TEXT = 'State changed from ''Awaiting Prep'' to ''Import Error''' 

但这带回没有结果,尽管是有大量的记录与这段文字。

我可以使用下面的语句来获取一些数据:

SELECT * FROM OSUSR_W7I_INVENTORYCHANGELOG 
WHERE OBJECTTYPEID = 3 
and CREATEDBY is null 
and TEXT like '%Awaiting Prep%' 
and TEXT like '%Import Error%' 

但不幸的是,因为它带回,指出数据带回过多的结果:导入错误“状态更改从‘’到”等待准备'' 我只在寻找'状态已从'等待准备'更改为'导入错误''

请任何人都可以帮忙。从阅读其他帖子中提出双引号应解决单引号的问题,但在这种情况下,它不起作用。 非常感谢

+0

你确定你的第一个例子不工作的原因是因为有一些空白在最后? “TEXT”字段的数据类型是什么? – Jamiec

+0

从一行中拉出实际文本并查看实际存在的内容。在我的眼睛看着你的形象,似乎有'从'和开幕报价之间的单一空间,并且可能有其他地方有额外的空间,你没有考虑。 –

+0

嗨Jamiec,最后没有空白。该字段的数据类型是nvarchar。 –

回答

0

可以使用如%的占位符LIKE结合为一,而不是:

SELECT * FROM OSUSR_W7I_INVENTORYCHANGELOG 
WHERE OBJECTTYPEID = 3 
and CREATEDBY is null 
and TEXT like '%Awaiting Prep%' 
and TEXT like '%Import Error%' 

做:

SELECT * FROM OSUSR_W7I_INVENTORYCHANGELOG 
WHERE OBJECTTYPEID = 3 
and CREATEDBY is null 
and TEXT like '%Awaiting Prep%Import Error%' 
+0

这会导致您只能检索所需的状态已从'正在等待准备'更改为'导入错误'行,但无缘投票。 – phaen

+0

*这将导致您仅检索所需的* - 不正确。它也将检索'fooA等待PrepbarImport Errortuu' – Jamiec

+0

嗨Phaen,这工作!谢谢 –

0

您可以尝试使用SQL Server LTRIM和RTRIM。如果有一些空白的情况。否则你的陈述似乎好

SELECT * FROM OSUSR_W7I_INVENTORYCHANGELOG 
WHERE OBJECTTYPEID = 3 
and CREATEDBY is null 
and LTRIM(RTRIM(TEXT)) = 'State changed from ''Awaiting Prep'' to ''Import 
Error''' 
+0

嗨Anubrij,我试过这个,但它没有奏效。我仍然没有结果。 –