タグ付けされた質問 「unicode」

2
Unicodeパラメーターと変数名を作成する方法
このすべての機能: CREATE DATABASE [¯\_(ツ)_/¯]; GO USE [¯\_(ツ)_/¯]; GO CREATE SCHEMA [¯\_(ツ)_/¯]; GO CREATE TABLE [¯\_(ツ)_/¯].[¯\_(ツ)_/¯]([¯\_(ツ)_/¯] NVARCHAR(20)); GO CREATE UNIQUE CLUSTERED INDEX [¯\_(ツ)_/¯] ON [¯\_(ツ)_/¯].[¯\_(ツ)_/¯]([¯\_(ツ)_/¯]); GO INSERT INTO [¯\_(ツ)_/¯].[¯\_(ツ)_/¯]([¯\_(ツ)_/¯]) VALUES (N'[¯\_(ツ)_/¯]'); GO CREATE VIEW [¯\_(ツ)_/¯].[vw_¯\_(ツ)_/¯] AS SELECT [¯\_(ツ)_/¯] FROM [¯\_(ツ)_/¯].[¯\_(ツ)_/¯]; GO CREATE PROC [¯\_(ツ)_/¯].[sp_¯\_(ツ)_/¯] @Shrug NVARCHAR(20) AS SELECT [¯\_(ツ)_/¯] FROM [¯\_(ツ)_/¯].[vw_¯\_(ツ)_/¯] …

1
SQL Server Unicode / NVARCHAR文字列を絵文字または補助文字に設定するにはどうすればよいですか?
Unicodeコードポイントに基づいて特定の文字にUnicode文字列変数を設定します。 65535を超えるコードポイントを使用したいのですが、SQL Server 2008 R2データベースにはの照合順序がありSQL_Latin1_General_CP1_CI_ASます。 MicrosoftのNCHARドキュメントによると、NCHAR関数は次のように整数を取ります。 integer_expression データベースの照合に補助文字(SC)フラグが含まれていない場合、これは0〜65535(0〜0xFFFF)の正の整数です。この範囲外の値を指定すると、NULLが返されます。補助文字の詳細については、照合とUnicodeサポートを参照してください。 データベースの照合が補助文字(SC)フラグをサポートしている場合、これは0〜1114111(0〜0x10FFFF)の正の整数です。この範囲外の値を指定すると、NULLが返されます。 したがって、このコード: SELECT NCHAR(128512); NULLこのデータベースに戻ります。 これと同じものを返したい: SELECT N'😀'; 照合に「補助文字(SC)フラグが含まれていない」データベースで、コードを使用して(実際の絵文字を使用せずに)Unicode文字列変数(nvarcharなど)を絵文字に設定するにはどうすればよいですか? 絵文字Unicodeコードポイントの全リスト (最終的には、すべてのキャラクターが機能するようにします。参照しやすいように絵文字を選択しました。) (サーバーはSQL Server 2008 R2ですが、それ以降のバージョンのソリューションについても興味があります。) 方法がないと仮定して、適切な照合を備えた別のデータベースのインラインユーザー定義関数を参照できますか? 「補足文字」フラグを持つ照合を見つけるにはどうすればよいですか? これにより、サーバー上のレコードは返されません。 SELECT * FROM sys.fn_helpcollations() WHERE name LIKE 'SQL%[_]SC'; 動作するSQL Server 2012が導入されLatin1_General_100_CI_AS_SCたようです。古いインスタンスに照合をインストールできますか? 照合参照: SQL Serverのchar、nchar、varchar、nvarcharの違いは何ですか? マイクロソフトの補助文字照合情報 MicrosoftのSQL Server 2008 R2照合リスト 照合に関係なく、SQL Serverが拡張文字を理解して処理できる理由についての説明はありNCHARますか?

1
LIKE N '% %'の検索がUnicode文字に一致し、=N' 'が多くに一致するのはなぜですか?
DECLARE @T TABLE( Col NCHAR(1)); INSERT INTO @T VALUES (N'A'), (N'B'), (N'C'), (N'Ƕ'), (N'Ƿ'), (N'Ǹ'); SELECT * FROM @T WHERE Col LIKE N'%�%' 返品 Col A B C Ƕ Ƿ Ǹ SELECT * FROM @T WHERE Col = N'�' 返品 Col Ƕ Ƿ Ǹ 以下ですべての可能なダブルバイト「文字」を生成=すると、LIKE N'%�%'バージョンがそれらの21,229に一致し、すべてのバージョンに一致することがわかります(同じ結果でいくつかの非バイナリ照合を試しました)。 WITH T(I, N) AS …

2
SQL Serverでこれらの文字がすべて等しいのはなぜですか?
わかりません。次のSQLクエリをご覧ください。 select nchar(65217) -- ﻁ select nchar(65218) -- ﻂ select nchar(65219) -- ﻃ select nchar(65220) -- ﻄ if nchar(65217) = nchar(65218) print 'equal' if nchar(65217) = nchar(65219) print 'equal' if nchar(65217) = nchar(65220) print 'equal' 推移的関係に基づいて、SQL Serverはそれらをすべて同じ文字と見なします。 ただし、たとえばC#などの他の環境では、それらは同じではありません。 私が混乱しているのは: SQL Serverでの文字列比較の仕組み 1台のマシンと1つのプラットフォームで比較が同じように動作しないのに、環境が異なる理由 これらの4つのキャラクターは、人間が理解できる1つのキャラクターを表しています。なぜUnicode文字マップが非常に豊富なのですか? もちろん、これは非常に大きな問題になります。私はテキスト処理アプリケーションに取り組んでおり、データはほぼどこからでも来ており、処理する前にテキストを正規化する必要があるためです。 違いの理由がわかっていれば、それを処理する解決策を見つけるかもしれません。ありがとうございました。

2
アクセントセンシティブソート
なぜこれらの2つのSELECTステートメントが異なるソート順になるのですか? USE tempdb; CREATE TABLE dbo.OddSort ( id INT IDENTITY(1,1) PRIMARY KEY , col1 NVARCHAR(2) , col2 NVARCHAR(2) ); GO INSERT dbo.OddSort (col1, col2) VALUES (N'e', N'eA') , (N'é', N'éB') , (N'ë', N'ëC') , (N'è', N'èD') , (N'ê', N'êE') , (N'ē', N'ēF'); GO SELECT * FROM dbo.OddSort ORDER BY col1 …

2
テーブル行の「CO2」を「CO₂」に更新できません
この表が与えられた場合: CREATE TABLE test ( id INT NOT NULL, description NVARCHAR(100) COLLATE Modern_Spanish_CI_AS NOT NULL ); INSERT INTO test (id, description) VALUES (1, 'CO2'); 活版印刷の問題を解決できないことに気付きました。 SELECT * FROM test WHERE id = 1; UPDATE test SET description = 'CO₂' WHERE id = 1; SELECT * FROM test WHERE id = …

4
varcharデータ型がUnicode値を許可するのはなぜですか?
varchar列を持つテーブルがあります。以下に示すように、商標(™)、著作権(©)およびその他のUnicode文字を許可しています。 Create table VarcharUnicodeCheck ( col1 varchar(100) ) insert into VarcharUnicodeCheck (col1) values ('MyCompany') insert into VarcharUnicodeCheck (col1) values ('MyCompany™') insert into VarcharUnicodeCheck (col1) values ('MyCompany░') insert into VarcharUnicodeCheck (col1) values ('MyCompanyï') insert into VarcharUnicodeCheck (col1) values ('MyCompany') select * from VarcharUnicodeCheck しかし、varcharの定義では、Unicode以外の文字列データが許可されています。ただし、Trademark(™)およびRegistered(®)シンボルはUnicode文字です。定義はvarcharデータ型のプロパティと矛盾しますか?最初のリンクと2つ目のリンクを読んだ。しかし、定義がユニコード文字列以外の値のみを許可すると言っているときに、ユニコード文字列を許可する理由を理解できませんでした。


2
データベースのデフォルトの照合順序を変更したときのLatin1_General_BINのパフォーマンスへの影響
データベース照合をに設定して、Latin1_General_BIN文字列比較で大文字と小文字を区別します。これはパフォーマンスに影響しますか?データベースのDMLまたはDDL操作に影響はありますか?データベースは既にテーブルとともに存在しています。

4
NVARCHAR列の値が実際にUnicodeであるかどうかを検出します
いくつかのSQL Serverデータベースを継承しました。ETLを取得するSQL Server 2014 Standardのソースデータベース(「Q」と呼びます)から約8670万行、41列の幅を持つ1つのテーブル(「G」と呼びます)がありますSQL Server 2008 R2 Standardで同じテーブル名を持つターゲットデータベース(「P」と呼びます)。 すなわち[Q]。[G] ---> [P]。[G] 編集:2017年3月20日:一部の人々は、ソーステーブルがターゲットテーブルの唯一のソースであるかどうかを尋ねました。はい、それが唯一のソースです。ETLに関する限り、実際の変換は行われていません。事実上、ソースデータの1:1コピーであることが意図されています。したがって、このターゲットテーブルに追加のソースを追加する予定はありません。 [Q]。[G]の列の半分強はVARCHAR(ソーステーブル)です。 13列はVARCHAR(80)です 9列はVARCHAR(30)です 2列はVARCHAR(8)です。 同様に、[P]。[G]の同じ列はNVARCHAR(ターゲットテーブル)で、同じ幅の同じ列数を持ちます。(つまり、同じ長さですが、NVARCHAR)。 13列はNVARCHAR(80)です 9列はNVARCHAR(30)です 2列はNVARCHAR(8)です。 これは私の設計ではありません。 ALTER [P]。[G](ターゲット)列のデータ型をNVARCHARからVARCHARに変更したい。安全に(変換によるデータ損失なしで)したいです。 ターゲット表の各NVARCHAR列のデータ値を見て、列に実際にUnicodeデータが含まれているかどうかを確認するにはどうすればよいですか? 各NVARCHAR列の各値を(ループで?)チェックし、値のいずれかが本物のUnicodeであるかどうかを確認できるクエリ(DMV?)は理想的なソリューションですが、他の方法も歓迎します。

1
Postgresからの非ASCII行のクエリ
い[:ascii:]クラスの仕事は、すべてのPostgresの中で?彼らのヘルプにはリストされていませんが、それを利用するウェブの例を見ることができます。 UTF-8データベースがあり、照合とc_typ eはen_US.UTF-8であり、Postgresバージョンは9.6.2です。このように非ASCII行を検索すると: select title from wallabag_entry where title ~ '[^[:ascii:]]'; Unicodeシンボルと非Unicodeシンボルの両方を取得します(完全な出力はこちら)。 Сталинская правозащитница: мать Меленкова бабушка Настя Дневник НКВДиста Шабалина: Знает ли Москва положение на фронте? Бег по городу и поездка на осле: как в средневековье наказывали прелюбодеев Как комиссар Крекшин в 1740-е чуть не отменил историю России Have …

2
SQL Server 2019で「nvarchar / nchar」が使用されるのはいつですか?
SQL Serverの2019 Microsoftが紹介してUTF-8サポート用CHARとVARCHARデータ型をと言います: この機能により、使用中の文字セットによっては、ストレージを大幅に節約できる場合があります。たとえば、UTF-8対応の照合を使用して、ASCII文字列を含む既存の列データ型をNCHAR(10)からCHAR(10)に変更すると、ストレージ要件が約50%削減されます。この削減は、NCHAR(10)がストレージに22バイトを必要とするのに対し、CHAR(10)は同じUnicode文字列に12バイトを必要とするためです。 UTF-8は、ように見えるサポートので、基本的に私たちがUnicodeデータを格納し始めることができ、すべてのスクリプトをvarcharしてchar列。また、ドキュメントで述べられているように、これによりテーブルとインデックスのサイズを削減でき、そこから読み取るデータの量が少ないため、パフォーマンスがさらに向上します。 これは、UTF-16を実装する列nvarcharとnchar列の使用を停止できることを意味しているのでしょうか。 誰かがシナリオと理由を指摘できますUTFか?エンコーディングでcharデータ型を使用せず、n-chars データ型を引き続き使用しますか?

2
補足のユニコード文字シマリスにOracleがJavaとは異なるバイト長を使用するのはなぜですか?
JavaコードでUTF-8文字列をOracle(11.2.0.4.0)列のサイズにトリミングすると、JavaとOracleは文字列を異なるバイト長として認識するため、エラーが発生します。NLS_CHARACTERSETOracleのパラメーターが「UTF8」であることを確認しました。 ユニコードシマリス絵文字を使用して、以下の問題を説明するテストを書きました(🐿️) public void test() throws UnsupportedEncodingException, SQLException { String squirrel = "\uD83D\uDC3F\uFE0F"; int squirrelByteLength = squirrel.getBytes("UTF-8").length; //this is 7 Connection connection = dataSource.getConnection(); connection.prepareStatement("drop table temp").execute(); connection.prepareStatement("create table temp (foo varchar2(" + String.valueOf(squirrelByteLength) + "))").execute(); PreparedStatement statement = connection.prepareStatement("insert into temp (foo) values (?)"); statement.setString(1, squirrel); statement.executeUpdate(); } これはテストの最後の行で失敗し、次のメッセージが表示されます。 …
8 oracle  java  utf-8  unicode 

2
Unicodeを非Unicodeに変換するときの自動変換/ NVARCHARからVARCHAR
Unicodeコードポイント9619は「ダークシェード」と呼ばれる文字です:▓(http://unicode-table.com/en/search/?q=9619)。 SQL_Latin1_General_CP1_CI_AS照合と1252コードページを使用すると?、コードページ1252にこの文字が含まれていないように見え、これがSQL Serverのように見えるため、そのUnicode文字を非Unicodeデータ型にキャスト/変換すると疑問符()が発生することが予想されます。変換できない場合の動作。 したがって、私の質問は、SQL Serverがこの文字を「パイプ、壊れた垂直バー」であるASCIIコード166に変換するのはなぜ¦ですか。 SELECT NCHAR(9619), CAST(NCHAR(9619) AS CHAR(1)), ASCII(CAST(NCHAR(9619) AS CHAR(1)))
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.