保留关键字*在SQL中如何工作

时间:2019-02-20 12:59:26

标签: sql db2

rdbms工具如何在select语句中执行*。提出问题的原因是它在不同的rdbms工具中的用法不同。 例如:oracle和db2在以下语句中给出错误,但是在mysql,mssql,sybase中可以正常工作。看起来像是SQL解析器的问题。

import { FormControl, FormGroup, Validators } from '@angular/forms';

export class Component {

   markerTypes = [{id:1,desc:'abc'}, {id: 2,desc:'xyz'}];
   default= 1;

   markerForm: FormGroup;

   constructor() {
       this.markerForm= new FormGroup({
           markerType: new FormControl(null)
       });
     this.markerForm.controls['markerType'].setValue(this.default, {onlySelf: true});
    }
}

select col_name,* from table_name 

3 个答案:

答案 0 :(得分:0)

仅当* 中没有其他列引用或表达式时,Oracle(可能还有DB2)才接受未经修饰的SELECT

但是,始终允许使用表别名。所以你可以这样写:

select col_name, t.*
from table_name t

请谨慎注意:结果集将有两个具有相同名称的列,这可能会导致其他问题。

答案 1 :(得分:0)

Db2 11.1支持不合格的*。例如

db2 "create table table_name( col_name int )"
DB20000I  The SQL command completed successfully.

db2 "select col_name,* from table_name"

COL_NAME    COL_NAME   
----------- -----------

  0 record(s) selected.

答案 2 :(得分:0)

https://en.wikipedia.org/wiki/SQL#Interoperability_and_standardization

  

SQL实现在供应商之间不兼容,不一定完全遵循标准。

“由于某些原因导致数据库系统之间缺乏可移植性,请参见上面的Wikipedia链接”