【问题标题】:How to check column exist or not before select that column from table在从表中选择该列之前如何检查列是否存在
【发布时间】:2016-09-21 19:30:22
【问题描述】:

下面是我用来从我的一个表中选择多个列的查询。 我从用户那里获取列名以从表中进行选择。 如果用户提供了错误的列名,则会显示未知列错误。在选择之前如何检查该列是否存在于表中?

SELECT `address_id`,`address_firstname`,` afserfw` 
FROM `patsm_addresstable` 
WHERE `address_id`='28'
LIMIT 0, 25 

这将给出以下错误:

#1054 - Unknown column ' afserfw' in 'field list' 

【问题讨论】:

  • 为什么用户要定义要选择的列?这个查询的目的是什么?或者,为用户提供一个选择下拉列表中存在的列
  • show columns from tablename; 将为您提供列列表。您必须在发送查询之前进行检查(或者只执行查询并返回此错误,它可能与先检查字段列表然后返回手动错误(如 Unknown column ' afserfw')自己的效果相同。)您无法在查询内部进行检查如果查询要使用的列存在(例如,您不能使用if exists column afserfw then afserfw else null
  • 嗨,马特,它应该是用户定义的,因为用户可以创建自定义字段。对于我的要求,我希望用户的手机号码发送一些通知消息。无需在下拉列表中显示所有字段,并且移动字段没有任何特定标识来单独获取它们。谢谢你
  • 感谢您宝贵的 cmets Solflare。

标签: mysql if-statement select


【解决方案1】:

此查询将为您提供特定表中的列及其数据类型的列表。

SELECT COLUMN_NAME, DATA_TYPE
  FROM INFORMATION_SCHEMA.COLUMNS
 WHERE TABLE_SCHEMA = DATABASE()
   AND TABLE_NAME = 'tablename'

您可以在针对任何表构造查询时,使用此结果集来确定给定列是否存在。

但要小心:允许最终用户为您提供列名的 Web 应用程序很难确保免受网络骗子的入侵。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-21
    • 2012-03-22
    • 2011-01-22
    • 1970-01-01
    • 2021-06-02
    • 2012-01-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多