1

LIKE列に対してSQL(T-SQL)で選択を実行すると、次のことができる理由を誰かが説明できますかvarchar

SELECT *
  FROM Table
  WHERE Name LIKE 'Th%'

で始まる名前を取得しますが、列Thで同じことを行うと、次のように年の前に必要です。datetime%

SELECT *
  FROM Table
  WHERE Date LIKE '%2013%'

2013 年の日付を取得します。日時はyyyy-MM-dd hh:mm:ss形式で保存されます。スタイル クエリを使用できることはわかっていますが、ここDATEPARTで余分なクエリが必要な理由に興味がありまし%た。

4

4 に答える 4

2

構文が役に立たないので、疑問に思うのはやめてください。

SELECT *
FROM Table
WHERE Date LIKE '%2013%'

比較時に日付が varchar に変換されるため、完全なテーブル スキャンが提供されます。言い換えれば、それをしないでください!

代わりに次の構文を使用してください。

SELECT *
FROM Table
WHERE Date >= '2013-01-01T00:00:00'
  and Date < '2014-01-01T00:00:00'
于 2013-11-07T09:54:03.307 に答える
0

SQL サーバーは日時をこの形式 (1900 年 1 月 1 日 9:20 午前) に変換します。そのため、追加の % を使用する必要があります。

1 月から始まるレコードを検索する場合

日時には次のクエリを使用できます

SELECT *
FROM Table
WHERE Date LIKE 'Jan%'.

余分な「%」は必要ありません。

于 2013-11-07T09:54:01.977 に答える