4

mysql クエリで生成された範囲列を比較する方法はありますか?

SELECT ue.bundle,ue.timestamp,b.id,bv.id as bundleVersionId,bv.start_date,bv.end_date, bv.type,ue.type from (
 SELECT bundle,timestamp,tenant, case when Document_Id ='' then 'potrait'
 WHEN Document_Id<>'' then 'persisted' end   as type from uds_expanded ) ue
 JOIN bundle b on b.name=ue.bundle  join bundle_version bv on b.id=bv.bundle_id 
 WHERE ue.tenant='02306' and ue.timestamp >= bv.start_date and ue.timestamp <=bv.end_date and **ue.type=bv.type ;**

タイプを比較しようとすると、次のエラーが発生します

 Error Code: 1267. Illegal mix of collations (utf8_general_ci,COERCIBLE) and (latin1_swedish_ci,IMPLICIT) for operation '=' 0.000 sec
4

4 に答える 4

0

単一の列が照合を持つことができることに注意してください。

たとえば、Doctrine は VARCHAR 型の列を として生成 CHARACTER SET utf8 COLLATE utf8_unicode_ciし、テーブルの照合順序を変更しても単一の列には影響しません。

次のコマンドを使用して、列の照合順序を変更できます。

ALTER TABLE `table` 
CHANGE COLUMN `test` `test` VARCHAR(15) CHARACTER SET 'utf8' COLLATE 'utf8_general_ci'

またはMySql Workbenchインターフェースで->テーブルを右クリック->テーブルを変更し、インターフェースで列をクリックして変更します。

于 2016-08-02T13:36:10.087 に答える
0

可能な限り ascii_bin を使用してください。ほとんどすべての照合と一致します。

于 2016-08-24T12:01:40.370 に答える