當前位置:首頁 » 編程語言 » sql列名不能全數字
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql列名不能全數字

發布時間: 2022-05-28 07:51:54

『壹』 sql Server列名不能使用數字么

SQL Server中的列名可以使用數字,但不能使用數字開頭;關於列名的命名規則:

1、表中列的名稱。列名必須遵循標識符規則並且在表中是唯一的。列名最多可包含 128 個字元;

『貳』 sql查詢純數字欄位的問題

這里的2222表示數字,表示的是一個值,而不是欄位。查詢符合條件有多少個值,就會查出多少個2222如果以字母開頭,沒有單引號,表示不是值,是欄位

『叄』 mysql資料庫名不能叫全數字的嗎

是的.可以數字開頭,但絕不能是全數字的資料庫名.
另外請注意,mysql對大小寫是敏感的.

『肆』 SQL 語句列名是數字怎麼辦

select [20131220] from [Sheet15$]

『伍』 SQL中大於多少個漢字或多少個位元組,並且不能出現數字怎麼表示,在線等

你是要寫存儲過程?
還是建表的約束條件啊?

大於多少個漢字或多少個位元組 比較簡單, LENGTH( 列名 ) > 數字。 基本上就是長度判斷了。

註:
Oracle,DB2 ,MySQL, SQLite 函數名字是 LENGTH
SQL Server 函數名字是 LEN

不能出現數字, 恐怕需要用正則表達式處理,比較方便。

這個要看你的資料庫, 是什麼資料庫了。
因為不同的資料庫, 正則表達式 的那個函數不一樣的。

對於 Oracle,
使用 REGEXP_INSTR ( 列名, '[0-9]+') = 0 來實現

對於 SQL Server
使用 PATINDEX(『%[0-9]%』, 指定字元串) = 0 來實現

『陸』 sql排序問題,字元串中有全數字和含中文的, 要求全數字的轉換成整數排序,含中文的默認排在前面或者最後

使用 ISNUMERIC函數就可以了,
order by ISNUMERIC(欄位),case when ISNUMERIC(欄位)=0 then 0 else cast(欄位 as bigint) end

還有小數的!!暈。
那就把bigint改成 float
order by ISNUMERIC(欄位),case when ISNUMERIC(欄位)=0 then 0 else cast(欄位 as float) end

『柒』 sql:查詢一個欄位裡面時不是全為數字

用ltrim
函數,如果提示未選定行,那麼欄位不全為數字,如果有返回值,那麼全為數字
select
1
from
al
where
ltrim('12385x2','0123456789')
is
null

『捌』 sql server2000 如何讓數字作為列名,用如下語句總是提示數字附近有語法錯誤,把數字改成大寫就沒有問題

select
t.欄位4,
sum([t.1303]) as [1303收入],
sum([t.1302]) as [1302收入],
sum([t.1303]) - sum([t.1302]) as 差值
from
(select
欄位4,
欄位18 as [1303],
0 as [1302]
from [1303]
union all
select
欄位4,
0 as [1303],
欄位18 as [1302]
from [1302]
) t
group by
t.欄位4
having sum([t.1303]) - sum([t.1302]) > 300;

『玖』 sql語言中,各種數據類型代表的含義是什麼

(1)數值型

數值是諸如32 或153.4 這樣的值。MySQL 支持科學表示法,科學表示法由整數或浮點數後跟「e」或「E」、一個符號(「+」或「-」)和一個整數指數來表示。1.24E+12 和23.47e-1 都是合法的科學表示法表示的數。而1.24E12 不是合法的,因為指數前的符號未給出。

浮點數由整數部分、一個小數點和小數部分組成。整數部分和小數部分可以分別為空,但不能同時為空。

數值前可放一個負號「-」以表示負值。

(2)字元(串)型

字元型(也叫字元串型,簡稱串)是諸如「Hello, world!」或「一個饅頭引起的血案」這樣的值,或者是電話號碼87398413這樣的值。既可用單引號也可用雙引號將串值括起來。

初學者往往分不清數值87398143和字元串87398143的區別。都是數字啊,怎麼一個要用數值型,一個要用字元型呢?關鍵就在於:數值型的87398143是要參與計算的,比如它是金融中的一個貨款總額;而字元型的87398143是不參與計算的,只是表示電話號碼,這樣的還有街道號碼、門牌號碼等等,它們都不參與計算。

(3)日期和時間型

日期和時間是一些諸如「2006-07-12」或「12:30:43」這樣的值。MySQL還支持日期/時間的組合,如「2006-07-12 12:30:43」。

(4)NULL值

NULL表示未知值。比如填寫表格中通訊地址不清楚留空不填寫,這就是NULL值。

我們用Create Table語句創建一個表,這個表中包含列的定義。例如我們在前面創建了一個joke表,這個表中有content和writer兩個列:

定義一個列的語法如下:

其中列名由col_name 給出。列名可最多包含64個字元,字元包括字母、數字、下劃線及美元符號。列名可以名字中合法的任何符號(包括數字)開頭。但列名不能完全由數字組成,因為那樣可能使其與數據分不開。MySQL保留諸如SELECT、DELETE和CREATE這樣的詞,這些詞不能用做列名,但是函數名(如POS 和MIN)是可以使用的。

列類型col_type表示列可存儲的特定值。列類型說明符還能表示存放在列中的值的最大長度。對於某些類型,可用一個數值明確地說明其長度。而另外一些值,其長度由類型名蘊含。例如,CHAR(10) 明確指定了10個字元的長度,而TINYBLOB值隱含最大長度為255個字元。有的類型說明符允許指定最大的顯示寬度(即顯示值時使用多少個字元)。浮點類型允許指定小數位數,所以能控制浮點數的精度值為多少。

可以在列類型之後指定可選的類型說明屬性,以及指定更多的常見屬性。屬性起修飾類型的作用,並更改其處理列值的方式,屬性有以下類型:

(1)專用屬性用於指定列。例如,UNSIGNED 屬性只針對整型,而BINARY屬性只用於CHAR 和VARCHAR。

(2)通用屬性除少數列之外可用於任意列。可以指定NULL 或NOT NULL 以表示某個列是否能夠存放NULL。還可以用DEFAULT,def_value 來表示在創建一個新行但未明確給出該列的值時,該列可賦予值def_value。def_value 必須為一個常量;它不能是表達式,也不能引用其他列。不能對BLOB 或TEXT 列指定預設值。

如果想給出多個列的專用屬性,可按任意順序指定它們,只要它們跟在列類型之後、通用屬性之前即可。類似地,如果需要給出多個通用屬性,也可按任意順序給出它們,只要將它們放在列類型和可能給出的列專用屬性之後即可。

2. MySQL的列(欄位)類型

資料庫中的每個表都是由一個或多個列(欄位)構成的。在用CREATE TABLE語句創建一個表時,要為每列(欄位)指定一個類型。列(欄位)的類型比數據類型更為細化,它精確地描述了給定表列(欄位)可能包含的值的種類,如是否帶小數、是否文字很多。

MySQL有整數和浮點數值的列類型,如表1所示。整數列類型可以有符號也可無符號。有一種特殊的屬性允許整數列值自動生成,這對需要唯一序列或標識號的應用系統來說是非常有用的。

類型 說明

TINYINT 非常小的整數

SMALLINT 較小整數

MEDIUMINT 中等大小整數

INT 標准整數

BIGINT 較大整數

FLOAT 單精度浮點數

DOUBLE 雙精度浮點數

DECIMAL 一個串的浮點數

表1:數值列類型

每種數值類型的名稱和取值范圍如表2所示。

類型說明 取值范圍

TINYINT[(M)] 有符號值:-128 到127

無符號值:0到255(0 到28 - 1)
SMALLINT[(M)] 有符號值:-32768 到32767(- 215 到215 - 1)
無符號值:0到65535(0 到21 6 - 1)

MEDIUMINT[(M)] 有符號值:-8388608 到8388607(- 22 3 到22 3 - 1 )
無符號值:0到16777215(0 到22 4 - 1)

INT[(M)] 有符號值:-2147683648 到2147683647(- 231 到231- 1)
無符號值:0到4294967295(0 到232-1)

BIGINT[(M)] 有符號值:-9223372036854775808 到 9223373036854775807(- 263到263-1)

無符號值:0到18446744073709551615(0到264 – 1)

FLOAT[(M, D)] 最小非零值:±1.175494351E - 38

DOUBLE[(M,D)] 最小非零值:±2.2250738585072014E - 308

DECIMAL (M, D) 可變;其值的范圍依賴於M 和D

表2:數值列類型的取值范圍

類型說明 存儲需求

TINYINT[(M)] 1位元組

SMALLINT[(M)] 2位元組

MEDIUMINT[(M)] 3位元組

INT[(M)] 4位元組

BIGINT[(M)] 8位元組

FLOAT[(M, D)] 4位元組

DOUBLE[(M, D)] 8位元組

DECIMAL (M, D) M位元組(MySQL < 3.23),M+2位元組(MySQL > 3.23 )

表3:數值列類型的存儲需求

MySQL提供了五種整型: TINYINT、SMALLINT、MEDIUMINT、INT和BIGINT。INT為INTEGER的縮寫。這些類型在可表示的取值范圍上是不同的。整數列可定義為UNSIGNED從而禁用負值;這使列的取值范圍為0以上。各種類型的存儲量需求也是不同的。取值范圍較大的類型所需的存儲量較大。

MySQL 提供三種浮點類型: FLOAT、DOUBLE和DECIMAL。與整型不同,浮點類型不能是UNSIGNED的,其取值范圍也與整型不同,這種不同不僅在於這些類型有最大值,而且還有最小非零值。最小值提供了相應類型精度的一種度量,這對於記錄科學數據來說是非常重要的(當然,也有負的最大和最小值)。

在選擇了某種數值類型時,應該考慮所要表示的值的范圍,只需選擇能覆蓋要取值的范圍的最小類型即可。選擇較大類型會對空間造成浪費,使表不必要地增大,處理起來沒有選擇較小類型那樣有效。對於整型值,如果數據取值范圍較小,如人員年齡或兄弟姐妹數,則TINYINT最合適。MEDIUMINT能夠表示數百萬的值並且可用於更多類型的值,但存儲代價較大。BIGINT在全部整型中取值范圍最大,而且需要的存儲空間是表示範圍次大的整型INT類型的兩倍,因此只在確實需要時才用。對於浮點值,DOUBLE佔用FLOAT的兩倍空間。除非特別需要高精度或范圍極大的值,一般應使用只用一半存儲代價的FLOAT型來表示數據。

在定義整型列時,可以指定可選的顯示尺寸M。如果這樣,M應該是一個1 到255的整數。它表示用來顯示列中值的字元數。例如,MEDIUMINT(4)指定了一個具有4個字元顯示寬度的MEDIUMINT列。如果定義了一個沒有明確寬度的整數列,將會自動分配給它一個預設的寬度。預設值為每種類型的「最長」值的長度。如果某個特定值的可列印表示需要不止M個字元,則顯示完全的值;不會將值截斷以適合M個字元。

對每種浮點類型,可指定一個最大的顯示尺寸M 和小數位數D。M 的值應該取1 到255。D的值可為0 到3 0,但是不應大於M - 2(如果熟悉ODBC 術語,就會知道M 和D 對應於ODBC 概念的「精度」和「小數點位數」)。M和D對FLOAT和DOUBLE 都是可選的,但對於DECIMAL是必須的。在選項M 和D時,如果省略了它們,則使用預設值。

2.2字元串列類型

MySQL提供了幾種存放字元數據的串類型,其類型如下:

類型名 說明

CHAR 定長字元串

VARCHAR 可變長字元串

TINYBLOB 非常小的BLOB(二進制大對象)

BLOB 小BLOB

MEDIUMBLOB 中等的BLOB

LONGBLOB 大BLOB

TINYTEXT 非常小的文本串

TEXT 小文本串

MEDIUMTEXT 中等文本串

LONGTEXT 大文本串

ENUM 枚舉;列可賦予某個枚舉成員

SET 集合;列可賦予多個集合成員

表4:字元串列類型

下表給出了MySQL 定義串值列的類型,以及每種類型的最大尺寸和存儲需求。對於可變長的列類型,各行的值所佔的存儲量是不同的,這取決於實際存放在列中的值的長度。這個長度在表中用L 表示。

類型說明

最大尺寸

存儲需求

CHAR( M)

M 位元組

M 位元組

VARCHAR(M)

M 位元組

L + 1位元組

TINYBLOB, TINYTEXT

28- 1位元組

L + 1位元組

BLOB, TEXT

216 - 1 位元組

L + 2位元組

MEDIUMBLOB, MEDIUMTEXT

224- 1位元組

L + 3位元組

LONGBLOB, LONGTEXT

232- 1位元組

L + 4位元組

ENUM(「value1」, 「value2」, ...)

65535 個成員

1 或2位元組

SET (「value1」, 「value2」, ...)

64個成員

1、2、3、4 或8位元組

表5:串列類型最大尺寸及存儲需求

L 以外所需的額外位元組為存放該值的長度所需的位元組數。MySQL 通過存儲值的內容及其長度來處理可變長度的值。這些額外的位元組是無符號整數。請注意,可變長類型的最大長度、此類型所需的額外位元組數以及佔用相同位元組數的無符號整數之間的對應關系。例如,MEDIUMBLOB 值可能最多224 - 1位元組長並需要3 個位元組記錄其結果。3 個位元組的整數類型MEDIUMINT 的最大無符號值為224 - 1。這並非偶然。

2.3日期時間列類型

MySQL 提供了幾種時間值的列類型,它們分別是: DATE、DATETIME、TIME、TIMESTAMP和YEAR。下表給出了MySQL 為定義存儲日期和時間值所提供的這些類型,並給出了每種類型的合法取值范圍。

類型名 說明

DATE 「YYYY-MM-DD」格式表示的日期值

TIME 「hh:mm:ss」格式表示的時間值

DATETIME 「YYYY-MM-DD hh:mm:ss」格式

TIMESTAMP 「YYYYMMDDhhmmss」格式表示的時間戳值

YEAR 「YYYY」格式的年份值

表6:日期時間列類型

下面舉個例子:

這個例子創建一個student表,這個表中有name欄位,字元類型列,不允許NULL(空值)。有Chinese、Maths和English三個整數類型列。還有個Birthday日期類型列。

CREATE TABLE student
(
Name varchar(20) NOT NULL,
Chinese TINYINT(3),
Maths TINYINT(3),
English TINYINT(3),
Birthday DATE

)

『拾』 sql2008 中 電話怎麼設置全是數字 不要用代碼 是用什麼約束

你試一下
添加添加CHECK (ISNUMERIC(列名)=1)約束