發表文章

SQL SERVER找出所有TABLE中特定欄位名稱的所有TABLE,再利用CONCAT組成更新或刪除的SQL指令,然後再整批更新資料

 SQL SERVER找出所有TABLE中特定欄位名稱的所有TABLE,再利用CONCAT組成更新或刪除的SQL指令。 SELECT concat( 'update ',     a.TABLE_SCHEMA , '.' , a.TABLE_NAME ,' set sales=100030913 where sales=','100023287'        ) FROM   INFORMATION_SCHEMA.TABLES  a    LEFT JOIN INFORMATION_SCHEMA.COLUMNS b    ON a.TABLE_NAME = b.TABLE_NAME  WHERE a.TABLE_TYPE    = 'BASE TABLE'   AND a.TABLE_NAME    Like '%%'  -- 資料表名稱   AND b.COLUMN_NAME   Like '%sales%'  -- 資料表欄位名稱 再利用查詢出來的結果一次性執行SQL指令,可大幅縮短查找TABLE的時間。

將3個union的資料合併成一列

  select a,b,c from x union select a,b,d from y union select a,b,e from z 得到資料為15000筆的a,b,c 欲合併得到資料為-->a,b,c,d,e  (大約5500筆資料) 以下執行時間為20秒--> select s1.SAL_MST_PERSONALID ID,s1.SAL_MST_ID,t1.TranDate td1,t2.TranDate td2,t3.TranDate td3  from (select * from sal001 where sal_mst_lay_off = 0) s1  left join ( SELECT s1.SAL_MST_PERSONALID ID,t9.FK_SAL_MST_ID,DATE_FORMAT(t9.trs_tcs_apply_date, '%Y%m%d') TranDate FROM trs009 t9  inner join sal001 s1 on s1.sal_mst_id=t9.fk_sal_mst_id WHERE t9.FK_TRS_MST_ID IN  (SELECT  t1.TRS_MST_ID FROM trs001 t1 WHERE t1.TRS_MST_TYPE_OLDER=1 AND t1.TRS_MST_CLASS_RELEASE=1 AND DATE_FORMAT(t1.TRS_MST_QUIZ_STARTDATE, '%Y') = DATE_FORMAT(CURDATE(), '%Y')-1) AND t9.TRS_TCS_IS_PASS = true ) t1 on s1.SAL_MST_ID=t1.FK_SAL_MST_ID left join ( SELECT s1.SAL_MST_PERSONALID ID,t9.FK_SAL_MST_ID,DATE_FORMAT(max(t9.trs_tcs_apply_date), '%Y%m%d') TranDate FROM trs009 t9  inner join sal001 s

mssql將數字開頭的字串去除

  用substring (str,pos,len)-> 由 <str> 中的第 <pos> 位置開始,選出接下去的 <len> 個字元。 搭配PATINDEX( '%pattern%' , expression ) :指定運算式中第一次出現的起始位置  pattern  : 要搜尋的 key word,前後需要用 %%包起來  expression  : 被搜尋的內容  return  : int,搜尋內容的位置    '%[^0-9]%'-->不是數字0-9以外的字串   '%[0-9]%'-->數字0-9的字串 指令如下: select ltrim(SUBSTRING(address, PATINDEX('%[^0-9]%', address), LEN(address))) FROM customer

JDBC連線MSSQL出現"驅動程式無法使用安全通訊端層 (SSL) 加密建立與 SQL Server 的安全連接。"

 在使用MSSQL JDBC DRIVER 9.4以後的版本,原先9.4之前可以正常使用的連線字串,出現標題的錯誤訊息。 原因:是因為10.2之後的版本啟用了TLS加密,造成9.4之前的連線字串無法正常運作。 解決方法:只需在連線字串加入encrypt=false就可以了,範例如下 Connection conn = DriverManager.getConnection("jdbc:sqlserver://192.168.XXX.XXX;user=??????;password=???????;database=???????;encrypt=false;");

MYSQL建立FUNCTION--中文姓名個資掩碼

  CREATE DEFINER=`%`@`%` FUNCTION `get_mask_name`(name varchar(50) CHARSET utf8mb4 ) RETURNS text CHARSET utf8mb4     DETERMINISTIC BEGIN DECLARE x varchar(50) CHARSET utf8mb4 DEFAULT ''; if isnull(name)=false then  case char_length(TRIM(name))    when 1 then set x=TRIM(name);    when 2 then set x=left(trim(name),1)+'O';    ELSE set x=CONCAT(left(trim(name),1) ,REPEAT('O',char_length(trim(name))-2) ,right(trim(name),1));    END case;  end if;   RETURN  x; END

eclipse專案有紅色驚嘆號

圖片
  eclipse在專案視窗中有紅色驚嘆號出現時,是該專案引用的一些外部JAR檔出現對應不到的情況 解決方式只需在Configure Build Path中,把有問題的引用導正或刪除即可

EXCEL VBA檔案另存成PDF,另存成XLSX加密碼

  Function saveFile_13(name, month) Dim RS As New ADODB.Recordset     sPath = ThisWorkbook.Path     Sheets("13").Select          Application.ScreenUpdating = False          X="A1234567890"         If Len(Trim(X)) > 0 Then                            Application.DisplayAlerts = False                 pw = Left(X, 1) & Right(X, 5)                                  '另存成PDF                'Sheets("13").ExportAsFixedFormat Type:=xlTypePDF, Filename:=sPath & "\" & Replace(name, "*", "") & "_" & month & "個月.pdf"                 '另存xlsx                  Worksheets("13").Copy                  ActiveWorkbook.SaveAs Filename:=sPath & "\" & Replace(name, "*", "") & "_" & month & "個月.xlsx", FileFormat:=xlOpenXMLWorkbook, Password:=pw                 ActiveWorkbook.Close              Application.DisplayAler