2021年1月25日 星期一

[SQL] 自動取號 (數字左側補0至指定長度)

數字左側補0至指定長度的SQL語法如下

RIGHT(REPLICATE('0', 指定長度) + CAST('123' AS NVARCHAR), 指定長度)

例:RIGHT(REPLICATE('0', 10) + CAST('123' AS NVARCHAR), 10)


~~自動取號的部分~~

假如ID為英文2位數+數字10位數的組合

例:ID0000000001


首先先宣告變數

declare @new_id varchar(20)


接下來就重點戲了,查詢目前取號的最大值並拆解ID的數字部分+1後組裝回去

看一下現在取到第幾號及新的號碼是否正常

SELECT TOP(1) id AS '目前號碼', LEFT(id,2) + RIGHT(REPLICATE('0', 10) + CAST(CAST(RIGHT(id, 10) AS int) + 1 AS NVARCHAR), 10) AS '取新號碼' FROM ID_List ORDER BY id DESC


指派變數的值

set @form_id = (SELECT TOP(1) LEFT(id,2) + RIGHT(REPLICATE('0', 10) + CAST(CAST(RIGHT(id, 10) AS int) + 1 AS NVARCHAR), 10) FROM ID_List ORDER BY id DESC)


就可以使用變數來INSERT、UPDATE了


2020年12月17日 星期四

[ASP.NET] array 轉 list

array 轉 list
    
    array = list.toArray();

list 轉 array
    list = Arrays.asList(array);

2020年7月30日 星期四

2020年4月24日 星期五

[C#] 取代雙引號

這真的要記一下,不然都會忘掉

string str = str.Replace(@"""", "");

2020年3月16日 星期一

[MS SQL] 數值轉換的問題(AVG)

最近遇到的問題是將文字轉成數值計算平均值時,
數值型態會受到一開始轉換的型態影響。

例如
AVG(CONVERT(INT,[分數]))  -- 整數型態
AVG(CONVERT(FLOAT,[分數]))  --浮點數型態

所以在一開始就要定義好轉換後想要的型態
才能順利得出想要的結果
感覺挺微妙的


順道附上轉成小數點兩位的函數
CAST(AVG(CONVERT(FLOAT,[分數])) AS DECIMAL(10,2))

以上

2020年2月6日 星期四

[C#] 英文轉數字

一般的英文轉數字

int a = (int)"A";


用於Excel將英文欄位轉換成對應的數值

      private int Column(string str)
        {
            char[] arr = str.ToCharArray();
            int column = 0;

            if (arr.Length == 1)
            {
                column = (int)arr[0] - 65 + 1;
            }
            else if (arr.Length == 2)
            {
                column = ((int)arr[0] - 65 + 1) * 26 + (int)arr[1] - 65 + 1;
            }
           
            return column;
        }

2019年4月10日 星期三

[ASP.NET] SqlBulkCopy (大量 INSERT 資料)

最近接觸到需要大量寫入資料的需求,
想起以前有碰過 SqlBulkCopy 這玩意,
它寫起來簡單且效率奇高,認真的推薦給大家~

WriteToServer() 允許使用 DataRow[]、DataTable、IDataReader、DbDataReader 做為資料來源。下面例子是使用 DataTable 匯入,需要注意的點是匯入匯出的資料表欄位名稱與資料型態都要一致。


[Excel] 日期(數值)轉文字

Excel的日期格式真的常常使人抓狂, 在使用者輸入日期後該欄位真正的值會被Excel轉換成一串數字, 這串數字代表著自1900/1/1到該日期的總天數。 但程式或使用者真正要的,就不是這串數字, 他們就是要日期!要日期!! So, 為了取得真正的值只好使用TEXT函數來解決了 ...