找出t_SYS_User資料表中,與t_SYS_Group之間沒有相關連的資料
SELECT * FROM ( SELECT docno,name,ename,goid FROM t_SYS_User ) u WHERE NOT EXISTS ( SELECT oid FROM t_SYS_Group WHERE oid=u.goid )
SELECT * FROM ( SELECT docno,name,ename,goid FROM t_SYS_User ) u WHERE NOT EXISTS ( SELECT oid FROM t_SYS_Group WHERE oid=u.goid )
string str = "john,jack,alton"; string select = "SELECT * FROM [TableName] WHERE [UserName] LIKE ''%' + REPLACE(str , ',' , '%'' OR [UserName] LIKE ''%') + '%''";
string str = "john,jack,alton"; string select = "SELECT * FROM [TableName] WHERE [UserName] LIKE ''%' + REPLACE(str , ',' , '%'' AND [UserName] LIKE ''%') + '%''";
UPDATE
TableA
SET
TableA.docno = TableB.docno,
TableA.name = TableB.name
FROM
TableB
WHERE TableA.id=TableB.id
;
BEGIN TRANSACTION doUpdate --do insert, update, delete ROLLBACK TRANSACTION doUpdate
BEGIN TRANSACTION doUpdate --do insert, update, delete COMMIT TRANSACTION doUpdate
DECLARE @strKeyword VARCHAR(512); SET @strKeyword = 'john,howard,lee'; SELECT * FROM v_HRM_Evaluation JOIN dbo.FN_SPLIT_TBL(@strKeyword,',') tblB ON name + batchnumber + jobtitles + CONVERT(varchar(30),joblevel) + workingfunc + ogno + ogname + ouno + ouname + ename + status + CONVERT(varchar(30),cdt,120) LIKE '%'+tblB.Value+'%' WHERE 1=1
--註:字串切割,用在單一欄位多條件同時查詢,如:(Select * from Table Where name like '%張%' or name like '%陳%' or name like '%王%') --引用範例(一): --select tblA.* from t_HRM_Evaluation tblA join dbo.FN_SPLIT_TBL('張,陳,王',',') tblB on tblA.name like '%'+tblB.Value+'%' --引用範例(二): --SELECT dbo.[FN_SPLIT](Name.Value, 2, '=') as Name, --dbo.[FN_SPLIT](Age.Value, 2, '=') as Age, --dbo.[FN_SPLIT](Job.Value, 2, '=') as Job, --dbo.[FN_SPLIT](Location.Value, 2, '=') as Location, --dbo.[FN_SPLIT](Add_Date.Value, 2, '=') as Add_Date --FROM HR data -- CROSS APPLY FN_SPLIT_TBL(data.Details, '|') Name -- CROSS APPLY FN_SPLIT_TBL(data.Details, '|') Age -- CROSS APPLY FN_SPLIT_TBL(data.Details, '|') Job -- CROSS APPLY FN_SPLIT_TBL(data.Details, '|') Location -- CROSS APPLY FN_SPLIT_TBL(data.Details, '|') Add_Date --WHERE Name.Pos = 1 AND Age.Pos = 2 AND Job.Pos = 3 AND Location.Pos = 4 AND Add_Date.Pos = 5 CREATE FUNCTION [dbo].[FN_SPLIT_TBL](@InExp varchar(8000), @Sep varchar(10)) --SELECT * FROM DBO.[FN_SPLIT_TBL]('TEST1,TEST2', ',') RETURNS @Res TABLE( Pos int, Value varchar(max)) AS BEGIN WITH Pieces(pn, start, stop) AS ( SELECT 1, 1, CHARINDEX(@Sep, @InExp) UNION ALL SELECT pn + 1, stop + 1, CHARINDEX(@sep, @InExp, stop + 1) FROM Pieces WHERE stop > 0 ) INSERT INTO @Res SELECT pn, SUBSTRING(@InExp, start, CASE WHEN stop > 0 THEN stop-start ELSE 512 END) AS s FROM Pieces OPTION (MAXRECURSION 0); RETURN; END
--註:無 --引用範例(一): --SELECT --dbo.[FN_SPLIT](data.Name, 2, '=') as Name, --dbo.[FN_SPLIT](data.Age, 2, '=') as Age, --dbo.[FN_SPLIT](data.Job, 2, '=') as Job, --dbo.[FN_SPLIT](data.Location, 2, '=') as Location, --dbo.[FN_SPLIT](data.Add_Date, 2, '=') as Add_Date --FROM ( -- SELECT -- dbo.[FN_SPLIT](Details, 1, '|') as Name, -- dbo.[FN_SPLIT](Details, 2, '|') as Age, -- dbo.[FN_SPLIT](Details, 3, '|') as Job, -- dbo.[FN_SPLIT](Details, 4, '|') as Location, -- dbo.[FN_SPLIT](Details, 5, '|') as Add_Date -- FROM HR) data CREATE FUNCTION [dbo].[FN_SPLIT] ( --SELECT DBO.FN_SPLIT('TEST1 , TEST2', 2, ',') @s varchar(512), @i int, @sep char(1) = ',') RETURNS varchar(512) AS BEGIN DECLARE @Ret VARCHAR(512); WITH Pieces(pn, start, stop) AS ( SELECT 1, 1, CHARINDEX(@sep, @s) UNION ALL SELECT pn + 1, stop + 1, CHARINDEX(@sep, @s, stop + 1) FROM Pieces WHERE stop > 0 ) SELECT @Ret = RTRIM(SUBSTRING(@s, start, CASE WHEN stop > 0 THEN stop-start ELSE 512 END)) FROM Pieces WHERE pn = @i RETURN @Ret; END
private void BindData() { string conString = ConfigurationManager.ConnectionStrings["constr"].ConnectionString; string query = "select * from customers where (name like '%' + @name + '%' or @name = '') and (age = @age or @age= 0) and (mobile = @mobile or @mobile= '') and (city = @city or @city= '')"; SqlCommand cmd = new SqlCommand(query); cmd.Parameters.AddWithValue("@name", txtName.Text.Trim()); cmd.Parameters.AddWithValue("@age", txtAge.Text.Trim() == "" ? 0 txtAge.Text.Trim()); cmd.Parameters.AddWithValue("@mobile", txtMobile.Text.Trim()); cmd.Parameters.AddWithValue("@city", ddlCity.SelectedIndex > 0 ? ddlCity.SelectedValue : ""); using (SqlConnection con = new SqlConnection(conString)) { using (SqlDataAdapter sda = new SqlDataAdapter()) { cmd.Connection = con; sda.SelectCommand = cmd; using (DataSet ds = new DataSet()) { sda.Fill(ds); GridView1.DataSource = ds; GridView1.DataBind(); } } } }
select CONVERT(char(19), getdate(), 120)
select CONVERT(char(10), getdate(), 20)
select CONVERT(char(10), getdate(), 111)
select CONVERT(char(8), getdate(), 11)
select CONVERT(char(8), getdate(), 112)
select CONVERT(char(6), getdate(), 12)
select CONVERT(char(10), getdate(), 102)
select CONVERT(char(8), getdate(), 2)
CREATE ASYMMETRIC KEY mykey WITH ALGORITHM = RSA_2048 ENCRYPTION BY PASSWORD = 'p@ssw0rd'; GO
select * from sys.asymmetric_keys
USE [EIP_new] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE [dbo].[sp_BPM_Modify_t_BPM_Seal_type_E] @action_type NCHAR(1) = '' , @id INT = 0, @username NVARCHAR(50) = '', @uid NVARCHAR(10) = '', @pwd NVARCHAR(30) = '', @sort INT = 0, @cdt DateTime AS BEGIN SET NOCOUNT ON; --傳入資料檢核 IF (@action_type NOT IN ('A','D','U')) BEGIN DECLARE @DBID INT; SET @DBID = DB_ID(); DECLARE @DBNAME NVARCHAR(128); SET @DBNAME = DB_NAME(); RAISERROR (N'資料庫 ID:%d, 資料庫名稱: %s。 錯誤訊息:傳入的Action_Mode,必須是 A, U, D 其中一種', 10, -- Severity. 1, -- State. @DBID, -- First substitution argument. @DBNAME); -- Second substitution argument. END --宣告加密用變數 DECLARE @encryp_uid NVARCHAR(max), @encryp_pwd NVARCHAR(max), @encryp_sort NVARCHAR(max) --SET @encryp_uid = ENCRYPTBYASYMKEY(ASYMKEY_ID('mykey'),@uid) SET @encryp_uid = ENCRYPTBYASYMKEY(ASYMKEY_ID('mykey'),CONVERT(nvarchar(max), @uid)) --SET @encryp_pwd = ENCRYPTBYASYMKEY(ASYMKEY_ID('mykey'),@pwd) SET @encryp_pwd = ENCRYPTBYASYMKEY(ASYMKEY_ID('mykey'),CONVERT(nvarchar(max), @pwd)) SET @encryp_sort = ENCRYPTBYASYMKEY(ASYMKEY_ID('mykey'),CONVERT(NVARCHAR(10),@sort)) SET @encryp_uid = ENCRYPTBYASYMKEY(ASYMKEY_ID('mykey'),CONVERT(nvarchar(max), @uid)) --插入 IF (@action_type = 'A') BEGIN INSERT INTO t_BPM_Seal_type_E ( username , [uid] , pwd , sort , cdt ) VALUES ( @username, @encryp_uid, @encryp_pwd, @encryp_sort, @cdt ) END --更新 IF (@action_type = 'U') BEGIN UPDATE t_BPM_Seal_type_E SET username=@username, [uid]=@encryp_uid, pwd=@encryp_pwd, cdt=@cdt WHERE id=@id END --刪除 IF (@action_type = 'D') BEGIN DELETE t_BPM_Seal_type_E WHERE id=@id END END GO
CREATE VIEW [dbo].[v_BPM_Seal_type_E] AS SELECT id, username, CONVERT(NVARCHAR(50), DECRYPTBYASYMKEY(ASYMKEY_ID('mykey'), uid, N'p@ssw0rd')) AS uid, CONVERT(NVARCHAR(50), DECRYPTBYASYMKEY(ASYMKEY_ID('mykey'), pwd, N'p@ssw0rd')) AS pwd, CONVERT(NVARCHAR(50), DECRYPTBYASYMKEY(ASYMKEY_ID('mykey'), sort, N'p@ssw0rd')) AS sort, cdt FROM dbo.t_BPM_Seal_type_E
Select id, ENCRYPTBYASYMKEY(ASYMKEY_ID('mykey'), CONVERT(nvarchar(max), username)) as '加密' From dbo.t_BPM_Seal_type_E
Select id, CONVERT(nvarchar(10), DECRYPTBYASYMKEY(ASYMKEY_ID('mykey'), uid, N'p@ssw0rd')) as '解密' From dbo.t_BPM_Seal_type_E
CREATE PROCEDURE [dbo].[sp_ATS_ComparisonPIVOT] @model nvarchar(max) AS declare @ColumnGroup nvarchar(max), @PivotSQL nvarchar(max) BEGIN SET NOCOUNT ON; select @ColumnGroup = COALESCE(@ColumnGroup + ',' ,'' ) + QUOTENAME(model) FROM t_ATS_spec --請看下一行範例 where model in (Select data From dbo.fn_slip_str(@model,',')) GROUP BY QUOTENAME(model) select @ColumnGroup SELECT @PivotSQL = N' SELECT * FROM (SELECT technicalspecification,name,model,text1 FROM t_ATS_spec) AS SourceTable PIVOT (max(text1) FOR model IN (' + @ColumnGroup + N') ) AS PivotTable' exec(@PivotSQL) END
Create Function fn_slip_str( @InStr nvarchar(2000) , @s_char nvarchar(1) ) Returns @tb Table ( sno int , data nvarchar(100) ) As Begin /*依據傳入字元進行字串分割,回傳Table*/ /* Declare @InStr nvarchar(2000) , @s_char nvarchar(1); Set @InStr = '字串一,字串2,字串3,字串4'; Set @s_char = ',';*/ Set @InStr = @s_char + @InStr + @s_char; Declare @p1 Int , @p2 Int , @data nvarchar(100) , @sno int; Set @p1 = -1 ; Set @p2 = -1 ; Set @data = '' ; Set @sno = 0; While ( 0 Not In (@P1,@P2) ) Begin Set @p1 = CharIndex(@s_char,@InStr,@p1+1); Set @p2 = CharIndex(@s_char,@InStr,@p1+1); If ( 0 In (@p1,@p2) ) Break; Set @data = SubString(@InStr,@p1+1,@p2-@p1-1); if ( @data <> '' ) Begin Set @sno = @sno +1; Insert Into @tb ( sno , data ) Values ( @sno , @data ) End End Return End
Select * From dbo.fn_slip_str('字串一,字串2,字串3,字串4',',');
Create Function fn_slip_str( @InStr nvarchar(2000) , @s_char nvarchar(1) ) Returns @tb Table ( sno int , data nvarchar(100) ) As Begin /*依據傳入字元進行字串分割,回傳Table*/ /* Declare @InStr nvarchar(2000) , @s_char nvarchar(1); Set @InStr = '字串一,字串2,字串3,字串4'; Set @s_char = ',';*/ Set @InStr = @s_char + @InStr + @s_char; Declare @p1 Int , @p2 Int , @data nvarchar(100) , @sno int; Set @p1 = -1 ; Set @p2 = -1 ; Set @data = '' ; Set @sno = 0; While ( 0 Not In (@P1,@P2) ) Begin Set @p1 = CharIndex(@s_char,@InStr,@p1+1); Set @p2 = CharIndex(@s_char,@InStr,@p1+1); If ( 0 In (@p1,@p2) ) Break; Set @data = SubString(@InStr,@p1+1,@p2-@p1-1); if ( @data <> '' ) Begin Set @sno = @sno +1; Insert Into @tb ( sno , data ) Values ( @sno , @data ) End End Return End
Select * From dbo.fn_slip_str('字串一,字串2,字串3,字串4',',');
DataTable dt = GetEmptyTable("Table1");//2.資料放入DataTable
DataRow dr = dt.NewRow(); dr["id"] = "1"; dr["no"] = "A001"; dt.Rows.Add(dr);//3.DataTable存入資料庫
MultiInsert(dt, "Table1");
/// <summary>/// 多筆新增資料/// </summary>/// <param name="dt"></param>/// <param name="tableName"></param>/// <returns></returns>public static int MultiInsert(DataTable dt, string tableName){try{int count = dt.Rows.Count;string ConnectionString = ConfigurationManager.ConnectionStrings[BPM.BPM_ConnStr].ToString();using (SqlConnection conn = new SqlConnection(ConnectionString)){conn.Open();//組合SQL Insert Stringstring mysql = InsertString_Collect(tableName, dt);SqlTransaction mytrans = conn.BeginTransaction();//逐筆檢驗 逐筆新增foreach (DataRow dr in dt.Rows){//檢驗比對資料內容是否正確//如c2 ==aa then c4=false...等if (1 == 1){using (SqlCommand cmd = new SqlCommand(mysql, conn)){cmd.Transaction = mytrans;foreach (DataColumn col in dt.Columns){cmd.Parameters.AddWithValue("@" + col.ColumnName, dr[col.ColumnName]);}cmd.ExecuteNonQuery();}}}mytrans.Commit();return count;}}catch (Exception){throw;}}/// <summary>/// 組出SQL Insert String/// </summary>/// <param name="tableName"></param>/// <param name="dt"></param>/// <returns></returns>public static string InsertString_Collect(string tableName, DataTable dt){try{string sql = "INSERT INTO " + tableName + "({p}) VALUES ({v})";string p = string.Empty;string v = string.Empty;foreach (DataColumn col in dt.Columns){p += col.ColumnName.ToString() + ",";v += "@" + col.ColumnName.ToString() + ",";}p = p.Substring(0, int.Parse(p.Length.ToString()) - 1);v = v.Substring(0, int.Parse(v.Length.ToString()) - 1);sql = sql.Replace("{p}", p);sql = sql.Replace("{v}", v);return sql;}catch (Exception){throw;}}
/// <summary>
/// 取得空的Table
/// </summary>
/// <param name="tableName">Database Table Name</param>
/// <returns>DataTable</returns>
public static DataTable GetEmptyTable(string tableName)
{
DataTable dt = new DataTable();
try
{
SqlConnection cn = new SqlConnection();
SqlCommand cmd = new SqlCommand();
SqlDataAdapter da = new SqlDataAdapter();
DataSet ds;
string sql = string.Empty;
string sqlwhere = string.Empty;
string sqlsort = string.Empty;
#region Execute SQL
cn.ConnectionString = ConfigurationManager.ConnectionStrings[BPM.BPM_ConnStr].ToString();
cmd.Connection = cn;
cmd.CommandText = "SELECT * FROM " + tableName + " WHERE 1=0";
cn.Open();
da.SelectCommand = cmd;
sql = da.SelectCommand.CommandText;
ds = new DataSet();
da.Fill(ds, "dt");
dt = ds.Tables["dt"];
cn.Close();
#endregion Execute SQL
}
catch (Exception)
{
//throw;
}
return dt;
}
SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE (TABLE_TYPE = 'BASE TABLE') AND (TABLE_SCHEMA = 'dbo')
SELECT * FROM MSYSOBJECTS
SELECT * FROM USER_OBJECTS