Coldfusion 前面已经提到的方法,这不是最好的方法。大多数企业数据库提供了通过视图识别现有列的更高效的选项。如果出于某种原因,您的数据库不支持这些视图或类似的内容,至少添加一个where 1=0子句。否则,查询将返回表中的所有记录,这是对带宽的浪费,因为数据从未被使用过

Coldfusion 前面已经提到的方法,这不是最好的方法。大多数企业数据库提供了通过视图识别现有列的更高效的选项。如果出于某种原因,您的数据库不支持这些视图或类似的内容,至少添加一个where 1=0子句。否则,查询将返回表中的所有记录,这是对带宽的浪费,因为数据从未被使用过,coldfusion,Coldfusion,前面已经提到的方法,这不是最好的方法。大多数企业数据库提供了通过视图识别现有列的更高效的选项。如果出于某种原因,您的数据库不支持这些视图或类似的内容,至少添加一个where 1=0子句。否则,查询将返回表中的所有记录,这是对带宽的浪费,因为数据从未被使用过。请注意,上面的英镑符号都是不需要的。这只是对前面提到的几种方法的一个小小的变化,恕我直言,这不是最好的方法。大多数企业数据库提供了通过视图识别现有列的更高效的选项。如果出于某种原因,您的数据库不支持这些视图或类似的内容,至少添加一个where


前面已经提到的方法,这不是最好的方法。大多数企业数据库提供了通过视图识别现有列的更高效的选项。如果出于某种原因,您的数据库不支持这些视图或类似的内容,至少添加一个
where 1=0
子句。否则,查询将返回表中的所有记录,这是对带宽的浪费,因为数据从未被使用过。请注意,上面的英镑符号都是不需要的。这只是对前面提到的几种方法的一个小小的变化,恕我直言,这不是最好的方法。大多数企业数据库提供了通过视图识别现有列的更高效的选项。如果出于某种原因,您的数据库不支持这些视图或类似的内容,至少添加一个
where 1=0
子句。否则,查询将返回表中的所有记录,这是对带宽的浪费,因为数据从未被使用过。请注意,上面的英镑符号都不需要。
<cfquery name="qSelect" datasource="#dbname#">
    select Top 0 * from Elements
</cfquery>

<cfif not ListFindNoCase(qSelect.columnlist,"idLang")>
   <cfquery name="qAlterTable" datasource="#dbname#" dbtype="ODBC">
      ALTER TABLE Elements ADD idLang varchar(200) NULL
   </cfquery>
</cfif>
SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'YourTableName' 
AND COLUMN_NAME = 'idLang'
<cftry>
    <cfquery name="qAlterTable" datasource="#dbname#" dbtype="ODBC">
        ALTER TABLE 
            Elements 
        ADD idLang varchar(200) NULL
    </cfquery>
    <cfcatch type = "database">
        <cfoutput>#cfcatch.message# - #cfcatch.details#</cfoutput>
    </cfcatch>
</try>
<cfdbinfo datasource="votethisway.com" name="myColumns" type="columns" table="tblPoll" pattern="idLang">
<cfdump var="#myColumns#" label="myColumns">
<cffunction access="public" name="tableColumnExists" output="no" returntype="boolean" description="returns true if a table column exists" verifyclient="no" securejson="false">
    <cfargument name="datasource" type="string" required="yes" hint="name of the datasource">
    <cfargument name="table" type="string" required="yes" hint="name of the table">
    <cfargument name="column" type="string" required="yes" hint="name of the column">

    <!---initialize private variables--->
    <cfset var local = StructNew()>

    <cftry>
        <cfdbinfo datasource="#arguments.datasource#" name="local.qryColumns" type="columns" table="#arguments.table#" pattern="#arguments.column#">
        <cfcatch type="Database">
            <cfreturn false>
        </cfcatch>
    </cftry>

    <cfif local.qryColumns.RecordCount>
        <cfreturn true>
    </cfif>
    <cfreturn false>
</cffunction>
<cfquery name="my_Recordset" datasource="my_Datasource">
   SELECT * FROM my_Table
</cfquery>

<CFIF NOT ISDEFINED('my_Recordset.my_Column')>
   <!--- create column because it doesnt exist --->
<cfelse>
   <!--- drop or update column because it exist --->
</cfif>
<cfquery name="my_Recordset" datasource="my_Datasource">
   SELECT * FROM my_Table
</cfquery>

<cfset myList = #my_Recordset.columnList#>

<cfset mySearchResult = #ListContains(myList, "my_Column")#>

<CFIF mySearchResult is 0>
   <!--- create column because it doesnt exist --->
<cfelse>
   <!--- drop or update column because it exist --->
</cfif>
QueryKeyExists(qSelect, "idLang")