带有参数的WHERE子句中的SQL CASE

时间:2017-06-07 21:28:26

标签: sql switch-statement where

@status是存储proc的参数。基于@Status,如果@Status =' Y'然后只是获得活动记录。如果@Status =' N'然后获取已停用少于30天的记录。我们不希望停用超过30天的停用记录。因此,我需要将WHERE子句中的逻辑放在如下。请指导如何实现这个

from sqlalchemy import select
from sqlalchemy import create_engine
from sqlalchemy import Column, String, Integer
from sqlalchemy.schema import MetaData, Table

# create engine and connection
DB_URI = "mysql+mysqldb://username:password@127.0.0.1:3306/database?charset=utf8mb4"
engine = create_engine(DB_URI, convert_unicode=True, echo=False)
conn = engine.connect()

# create table
metadata = MetaData()
pieces_table = Table('pieces', metadata,
    Column('id', Integer, primary_key=True),
    Column('size', String(60)),
    Column('color', String(60)),
)
metadata.create_all(engine)

# insert data
conn.execute(pieces_table.insert(), [
    {'size': 'small', 'color': 'blue'},
    {'size': 'large', 'color': 'blue'},
    {'size': 'small', 'color': 'red'},
])

# query data

def build_query(table, params):
    query = select([table])
    for key, value in params.iteritems():
        query = query.where(table.columns[key] == value)
    return query

params = {
    'size': 'large',
    'color': 'blue',
}
query = build_query(pieces_table, params)
print conn.execute(query).fetchall()

1 个答案:

答案 0 :(得分:0)

你的逻辑太复杂了。怎么样?

  public static SpannableString getString(Context p_Context, int p_iResID, int p_iColor, Object... p_Items) {
    String l_Feedback = p_Context.getString(p_iResID, p_Items);
    SpannableString l_SpannableFeedback = new SpannableString(l_Feedback);
    int l_iItemColor = ContextCompat.getColor(p_Context, p_iColor);

    for(Object l_Object : p_Items) {
      String l_Item = (String) l_Object;
      int l_iStartIndex = l_Feedback.indexOf(l_Item);
      int l_iEndIndex = l_iStartIndex + l_Item.length();

      l_SpannableFeedback.setSpan(new ForegroundColorSpan(l_iItemColor), l_iStartIndex, l_iEndIndex, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
      l_SpannableFeedback.setSpan(new StyleSpan(Typeface.BOLD), l_iStartIndex, l_iEndIndex, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    }

    return l_SpannableFeedback;
  }

我认为"活跃"记录是那些没有停用日期的记录。