2

我正在使用 SQL Server 2008 R2。我正在尝试基于 sql 语句创建记录集。在WHERE子句中是'INTERNATIONAL PEOPLE' + Char(39) + 'S'. 所以单引号使它成为人们的。这是失败的。从研究看来,这应该不会失败。任何帮助都会很棒。谢谢

4

4 回答 4

15

您可以通过单引号转义单引号:)

WHERE field = 'INTERNATIONAL PEOPLE''S'
于 2013-02-02T00:00:38.970 回答
9

从您在评论中的示例中,我猜这是因为您的表已命名1099,而错误并不是真正来自您的WHERE子句。T-SQL 要求表名以字母字符开头。

尝试在其周围加上括号:

SELECT * FROM [1099] WHERE Name ='INTERNATIONAL PEOPLE' + CHAR(39) + 'S'
于 2013-02-02T03:27:32.127 回答
1

你能发布你的查询吗?转义单引号 -''- 应该有效。使用下面的代码进行测试。

IF OBJECT_ID('TempDB..#SingleQuoteTest') IS NOT NULL
BEGIN
    DROP TABLE #SingleQuoteTest
END

CREATE TABLE #SingleQuoteTest
(
Value   VARCHAR(MAX)
)

INSERT INTO #SingleQuoteTest
(
Value
)
SELECT 'International People'
UNION SELECT 'International People''s'
UNION SELECT 'John O''connor'


SELECT  Value 
FROM    #SingleQuoteTest 
WHERE   Value = 'International People''s'
--WHERE Value = 'John O''connor'
于 2013-02-02T00:54:07.297 回答
0

撇号 s 是撰写报告的基本要素。这是一个例子。在这种情况下,它赋予了一个人的占有欲。

 SELECT TitleAndLastName = (Title + ' ' + LastName +CHAR(39) +'s' +  ' '  + 'address is:'), FullAddress = (AddressLine1 + City + cast(StateProvinceID as nvarchar) + PostalCode)
    FROM [Person].[Person] as p
        Inner Join [Person].[Address] as a
                   on a.AddressID = p.BusinessEntityID
            Where AddressLine1 is not null
             and Title is not null;

上述查询的结果将包含每个人的姓氏 ('s)。

TitleAndLastName FullAddress

埃里克森女士的地址是:1226 Shoe St.Bothell 79 98011

Goldberg 先生的地址是:1399 Firestone DriveBothell 79 98011

祝你好运!

于 2016-05-31T19:14:03.493 回答