2017-03-03 4 views
1

私のデータベースにNULLがあるかどうかチェックする必要があります。 と、11列(or)とプラスの年(例:2017%)をチェックする必要があります。警告1292 mysqlのpythonのようなものを使用すると

def test(): 
    sql= "select date from a000760 where (total_assets is null or total_liabilities is null or sales_figures is null or sales_cost is null or business_profits is null or gross_margin is null or current_income is null or depreciation_expense_of_tangible_assets is null or liquid_asset is null or noncurrent_asset is null or liquid_liability is null) and (date like '2010%')" 
    curs.execute(sql) 
    #year="2010" 
    #curs.execute("select date from a000760 where (total_assets is null or total_liabilities is null or sales_figures is null or sales_cost is null or business_profits is null or gross_margin is null or current_income is null or depreciation_expense_of_tangible_assets is null or liquid_asset is null or noncurrent_asset is null or liquid_liability is null) and (date like %s)",year) 
    result = curs.fetchall() 
    if len(result)>0: // print shows() even if it's none. so, I use this 
     print "a000760" 
     print "2010 null exists" 

これは1つのテーブルのテストバージョンです。 私は2000以上のテーブルをチェックする必要があります。 このdefで動作し、エラーを表示します(1つのテーブルのみ)。 しかし、それは合計テーブルでは機能しません。 そして、私はこのエラーを取得する:

Warning: (1292, "Incorrect date value: '2010%' for column 'date' at row 1") 

私は全体の文法、 で検索しましたが、私は%2017%を入力すると、それは動作しませんか... 知りません。

+0

をこのエラーは、彼らがテーブルに無効な日付を挿入しようとしているときですたまたま他のすべての質問。私は 'SELECT'クエリで日付を比較しようとすると、このエラーは発生しません。 – Barmar

答えて

0

likeに日付を使用しないでください。日付は文字列ではありません。

あなたはただ行うことができます。

year(date) = 2010 

または:

date >= '2010-01-01' and date < '2011-01-01' 
+0

どのように答えをあなたに投票できますか:) – JsYun

関連する問題