8

SQL Server2008R2のテーブルに挿入された特殊文字に問題があります。重要なのは、文字列º(たとえば、3ELBOW90ºLONGRADIUS)をテーブルに挿入しようとすると、次のように表示されるということです。3ELBOW90�LONGRADIUS、およびすべてを選択しようとすると、文字を含む行-結果はnullです。

これを作成してASCIIで選択しようとしました:select * from itemcode where description like'%' + char(63)+'%'

そして、そのシンボルのASCIIが63であることを知るためにこれを作成します。

ASCII('�')を選択します

しかし、それはうまくいきません。その文字を含むすべての行を選択するには何をする必要があり、そのSQLに文字ºを認識させるにはどうすればよいですか?

ありがとう

4

5 に答える 5

9

記号

U+00B0 ° degree sign (HTML: ° °)

は ASCII 文字ではなく、通常は NVARCHAR 列とN''文字列リテラルが必要です。(シンボルをサポートするコードページなどを除く)

63 は疑問符のコードです。これは、ASCII の逆疑問符のフォールバックです。

select UNICODE('�') => 63
select UNICODE(N'�') => 65533

ここで、65533 は、変換または表示できなかった文字を表示するために使用されるUnicode 置換文字です。

于 2012-12-04T21:45:05.140 に答える
3

これを実行すると:

print ascii('º')

アスキーコード値として186を取得するので、試してください:

select * from YourTable Where Description like '%'+char(186)+'%'

すべてのASCIIコードを表示するには、これを実行します:

;WITH AllNumbers AS
(
    SELECT 1 AS Number
    UNION ALL
    SELECT Number+1
        FROM AllNumbers
        WHERE Number<255
)
SELECT Number,CHAR(Number) FROM AllNumbers
OPTION (MAXRECURSION 255)

nvarchar列を使用していることをコメントで述べたEDIT op。

ascii について偽造するには、NCHAR (Transact-SQL)を使用して度記号を出力します。

print '32'+NCHAR(176)+'F' --to display it

select * from YourTable 
    Where Description like '%'+NCHAR(176)+'%' --to select based on it

UNICODE (Transact-SQL)を使用して値を取得します。

print UNICODE('°')

戻り値:

176
于 2012-12-04T21:45:46.853 に答える
1
select top 10 * from table_name 
where tbl_colmn like N'%'+  NCHAR(65533) + N'%'

関数 NCHAR(65533) は、探している文字を返します。

于 2014-10-10T10:13:24.047 に答える
0

それがNVARCHARであることを確認することに加えて、私はこのようなものを使用します

選択 (N'�')

SQL Server 2008 で特殊文字を表示するには?

于 2012-12-04T21:44:47.020 に答える