web-dev-qa-db-ja.com

SQLテキストデータ型は廃止されましたか?

Microsoft SQL Serverがtextデータ型を廃止してvarchar(max)を採用したことを読んだことがあります。

PostGreSQLはvarcharの代替としてtext(長さなし)をすでに許可しています。

問題は、ANSI SQL標準がtextの廃止について何を言わなければならないか、そして最良の代替案ですか?また、MySQL/MariaDBもこれに従いますか?

ありがとう

1
Manngo

ANSI SQL標準では、TEXTタイプはありません。 CHARVARCHARなど、さまざまな文字列型が定義されていますが、TEXT型については言及されていません。 _CHARACTER LARGE OBJECT_と_BINARY LARGE OBJECT_があります。

さまざまなDBMS(Postgres、SQL Server、MySQL)にあるさまざまなTEXTタイプは追加であり、それらの間にはわずかな違いがあります。それらの類似点は、非常に大きな文字列を保持できることです。

SQL ServerのTEXTは廃止される予定です。 MySQLのTEXTは非推奨ではありません。 PostgreSQLのTEXTは十分にサポートされており、VARCHAR(n)の代わりにあらゆる場所で使用することが多くの人に推奨されています。 Postgresのドキュメントから 文字タイプ

さらに、PostgreSQLは、任意の長さの文字列を格納するテキストタイプを提供します。 type textはSQL標準にはありませんが、他のいくつかのSQLデータベース管理システムにもあります。

だから、質問:

問題は、ANSI SQL標準がtextの廃止について何を言わなければならないか、そして最良の代替案ですか?また、MySQL/MariaDBもこれに従いますか?

答えるのは簡単です:何もありません。TEXTタイプがないため、TEXTの廃止はありません。 TEXTは、ANSI SQLの予約済みキーワードでもありません。あるDBMS(MySQL)は、標準にないタイプの別のDBMS(SQL Server)の廃止決定に従う必要はありません。

9
ypercubeᵀᴹ

ANSI SQL標準(私があなたが参照していると想定しています)は、Microsoft(またはOracleなど)が特定のDBMSの種類に合うようにデータ型を実装および削除する方法、およびどれが優先されるかについては何も述べていません。

Microsoftの標準では、テキストの代わりにvarchar、ntextの代わりにnvarchar、イメージの代わりにvarbinaryを使用しています。これは、データタイプの機能/パフォーマンスが向上し、データベースにどのように格納されるかによるものです。

詳細については、StackOverflowに関する質問と回答をご覧ください。 https://stackoverflow.com/questions/564755/sql-server-text-type-vs-varchar-data-type

更新

これは、購入せずに標準を読むのと同じくらい近いものです。セクションに興味があります4.4.3.2文字列タイプ

http://jtc1sc32.org/doc/N1951-2000/32N1963T-text_for_ballot-FCD_9075-1.pdf

先に述べたように、標準は、データタイプを非推奨にする方法や、固有のデータタイプについては関係ありません。 a型自体が準拠する必要があるものだけです。

また、PDFはSQL:2011 Wikiページにあります(この質問をする前に確認したと思います)。) https://en.wikipedia.org/wiki/SQL:2011

0
Stephen Falken