❶ sql 查詢語句自動增加序號
.使用臨時表實現
SQL的IDENTITY函數可以提供自增的序號,但只能用在帶有INTO table子句的SELECT語句中,所以如果可以使用臨時表的情況下可以使用這種實現方法。
eg:
SELECT IDENTITY(INT,1,1) as seq,field1,field2,...,fieldn INTO tmpTableName FROM srcTableName;
SELECT * FROM tmpTableName;
DROP TABLE tmpTableName;
❷ sql語句執行順序、
順序如下:
8、SELECT(9)DISTINCT10、<TopNum><selectlist>
1、FROM[left_table]
3、<join_type>JOIN<right_table>
2、 ON<join_condition>
4、WHERE<where_condition>
5、GROUPBY<group_by_list>
6、WITH<CUBE|RollUP>
7、HAVING<having_condition>
9、ORDERBY<order_by_list>
❸ 求教一個SQL語句寫法
既然只要每一種編碼的第一條記錄,那就從編碼著手
select left(編碼,4) as 編碼, 名稱 from test where 編碼 like '%01'
但是要保證每種編碼的第一條最後兩位是「01」
❹ SQL同一欄位數據相同按順序編號,不相同的從頭開始
B2輸入
=IF(A2<>A1,1,B1+1)
下拉
❺ sql語句怎麼讓一個字元串的內容有升序有降序
select ...from ...where ...
order by dbo.fuc_anzObject(name,'-',1) asc ,dbo.function fuc_anzObject(name,'-',3) desc,dbo.fuc_anzObject(name,'-',6) asc
函數,用於分割字元串取值參數說明:
@text :源文本內容 @:分隔用字元 @ins 取第幾節內容
------------------------------
create function fuc_anzObject(@text varchar(200),@tax char,@ins int)
returns varchar(200)
as
begin
declare @txt varchar(200)
set @txt=''
while(CHARINDEX(@tax,@text)>0 and @ins>0)
begin
set @txt=left(@text,CHARINDEX(@tax,@text)-1)
set @text=substring(@text,CHARINDEX(@tax,@text)+1,len(@text))
if(@ins=0)
break
set @ins=@ins-1
end
if(@ins=1 and CHARINDEX(@tax,@text)=0)
set @txt=@text
if(@ins>1 and CHARINDEX(@tax,@text)=0)
set @txt=''
return @txt
end
-------------這個是通用的方法
如果是定製的方法,就需要把函數的內容寫死在語句里,反復的套用substring和CHARINDEX來取要的值,寫起來比較麻煩,但是數據量很龐大時效率會比調函數高一些.
❻ sql資料庫自動編號
樓上的刪除一個id的時候是可以的,要是連續刪除幾個就over了。用rowid可以啊
select
rownum
as
id,列名
from
表名
ok了!
❼ 請問怎麼修改MS SQL資料庫的編碼方式啊
sql server 2000的unicode編碼有特殊性,僅僅在rails中使用utf8編碼,和把全部rails項目文件格式改成utf8之外,還是不夠的。僅僅這樣做,只是部分中文字元能夠正確處理,而且存入sql server2000中的中文數據,也完全是亂碼。正確的配置方法應該如下。
1. ms sql server2000中數據欄位全部要選擇成n打頭的類型,比如ntext,nvarchar等。
2.安裝ADO Driver
安裝one -click installer 來安裝ruby 的話就已經安裝了所有連接SQL Server使用的需求包.但是,並沒有安裝ADO Driver.
這樣來安裝它:
在Ruby目錄下找到這個目錄: \ruby\lib\ruby\site_ruby\1.8\DBD .例如:我的Ruby安裝在D:\ruby中,所以是這個目錄D:\ruby\lib\ruby\site_ruby\1.8\DBD 在該目錄中創建一個ADO文件夾. 下載Ruby-DBI,將lib/dbd_ado/ADO.rb文件拷貝到X:/ruby/lib/ruby/site_ruby/1.8/DBD/ADO/ADO.rb
3. 配置database.yml:Java代碼
development:
adapter: sqlserver
database: database_name
host: server_name
username: user_name
password: your_pw_here
development:
adapter: sqlserver
database: database_name
host: server_name
username: user_name
password: your_pw_here
4.在environment.rb添加下面代碼
require 'win32ole'
WIN32OLE.codepage = WIN32OLE::CP_UTF8
在這里稍微解釋下第四部分的設置。sql server 2000中使用的unicode 並非是utf8,ado的默認鏈接編碼都是當前系統設置的code pages相關的。
一般的windows設置都是非unicode的,比如簡體中文windows系統下一般都是gb2312, 在rails中database.yml設置encoding: utf8,對於sql server沒有任何用處。
為了迫使sql server接受utf8數據,必須修改ado鏈接的code pages值為utf8,才能讓ado部分代碼在接受rails傳入的utf8數據之後,不做任何額外的處理. 否則的話,ado部分代碼會根據當前系統的默認code pages值來處理這里字元數據。
於是在中文windows系統上,從utf8的rails項目中傳入的數據,會被當作gb2312編碼的數據來傳遞到sql server2000中,於是sql server2000中存入的數據會成為亂碼,也有部分數據在處理過程中出錯,導致sql 語句執行出錯。比如常見的中文字元右邊的單引號會不見的情況。
不設置 WIN32OLE.codepage = WIN32OLE::CP_UTF8,你的整個系統編碼配置是這樣的
rails(utf8)<-->ado(根據當前系統cp來取得編碼,或是gb2312或是其他)<-->sql server 2000 (unicode)
整個系統編碼不一至
WIN32OLE.codepage = WIN32OLE::CP_UTF8 這句代碼就是為了更改cp值.整個系統編碼配置是這樣的
rails(utf8)<-->ado(utf8)<-->sql server 2000 (unicode)
整個系統編碼一至,整個系統中不會再出現任何亂碼.
註:以上轉自:jack發表在javaeye網站上的文章,地址:http://www.javaeye.com/topic/53877
database.yml也可以用以下的配置試試(用下面這種的話第1條或許不用,沒試過)
❽ oracle sql 資料庫語句 有關自動編碼或者排序語句
select decode(num2,0,substr(num1, 1, 1),null) as "編號1", decode(num2,0,null,num2) as "編號2", name as "內容"
from (select distinct t1.b_name as num1,
0 as num2,
t1.b_name as name
from t_ball t1
union all
select t.b_name as num1,
row_number() over(partition by b_name order by b_name) as num2,
pay_name as name
from t_ball t)
order by num1, num2
你試試
❾ SQL怎樣自動生成編號格式如:GG+YYYYMMDD+4位流水編號
我的項目里也用到這種模式
但有點不好,靈活性太差,邏輯判斷都放在程序里,我剛寫的改進下。
CREATE PROC CreateMaxNum
(
@NumberHeader NVARCHAR(40) --號碼單頭類型
)
DECLARE @NumberHeader NVARCHAR(40), --編號頭
@NumberMiddle CHAR(8), --編號中間規則
@MaxNum CHAR(8), --編號最大流水號
@SQL NVARCHAR(4000)
SET @NumberMiddle= CONVERT(CHAR(8),GETDATE(),112) --設置中間編碼規則
SET @SQL = 'SELECT @Num=RIGHT(''0000''+LTRIM(MAX(RIGHT(號碼,4))+1),4)
FROM 號碼表
WHERE 號碼 LIKE '''+ @NumberHeader+'%'' ';
EXEC sp_executesql @Sql,N'@Num NVARCHAR(40) OUTPUT',@MaxNum OUT
IF @MaxNum IS NULL --不存在該類型的號碼,插入流水號為1的號碼,
BEGIN
SELECT @NumberHeader + @NumberMiddle + '0001'
END
ELSE
BEGIN --生成最大流水號
SELECT @NumberHeader + @NumberMiddle + @MaxNum
END