2

SQL Server 2008 R2 を使用しています。SQL ステートメントに基づいてレコードセットを作成しようとしています。WHERE節には'INTERNATIONAL PEOPLE' + Char(39) + 'S'. したがって、一重引用符はそれを PEOPLE'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

ゴールドバーグ氏の住所: 1399 Firestone DriveBothell 79 98011

幸運を!

于 2016-05-31T19:14:03.493 に答える