/****** Object: UserDefinedFunction [dbo].[ConvertNumberToText] Script Date: 30/12/2014 09:34:25 AM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*
Tanldt
Ngày: 05/07/2006
Trả về số kiểu chữ:
select dbo.ConvertNumberToText('10736918')
*/
ALTER FUNCTION [dbo].[ConvertNumberToText](
@Number VARCHAR(32)
)
RETURNS NVARCHAR(500)
AS
BEGIN
DECLARE @Text NVARCHAR(500)
DECLARE @Len INT
DECLARE @i INT
DECLARE @j INT
DECLARE @Flag VARCHAR(10)
SELECT @Len = LEN(LTRIM(RTRIM(@Number)))
SELECT @i = 1
SELECT @Text = ''
IF @Len > 32
BEGIN
SELECT @Text = N'Số quá lớn. Không thể convert được!'
RETURN @Text
END
WHILE @i <= @Len
BEGIN
IF ((@Len - @i + 1)%3 = 0
AND SUBSTRING(@Number, @i, 1) = '0'
AND (SUBSTRING(@Number, @i + 1, 1) <> '0' OR SUBSTRING(@Number, @i + 2, 1) <> '0'))
SELECT @Text = @Text + N' không'
IF SUBSTRING(@Number, @i, 1) = '2'
IF @i = 1
SELECT @Text = @Text + N' Hai'
else
SELECT @Text = @Text + N' hai'
IF SUBSTRING(@Number, @i, 1) = '3'
IF @i = 1
SELECT @Text = @Text + N' Ba'
ELSE
SELECT @Text = @Text + N' ba'
IF SUBSTRING(@Number, @i, 1) = '4'
IF @i = 1
SELECT @Text = @Text + N' Bốn'
ELSE
SELECT @Text = @Text + N' bốn'
IF SUBSTRING(@Number, @i, 1) = '6'
IF @i = 1
SELECT @Text = @Text + N' Sáu'
ELSE
SELECT @Text = @Text + N' sáu'
IF SUBSTRING(@Number, @i, 1) = '7'
IF @i = 1
SELECT @Text = @Text + N' Bảy'
ELSE
SELECT @Text = @Text + N' bảy'
IF SUBSTRING(@Number, @i, 1) = '8'
IF @i = 1
SELECT @Text = @Text + N' Tám'
ELSE
SELECT @Text = @Text + N' tám'
IF SUBSTRING(@Number, @i, 1) = '9'
IF @i = 1
SELECT @Text = @Text + N' Chín'
ELSE
SELECT @Text = @Text + N' chín'
IF SUBSTRING(@Number, @i, 1) = '5'
IF @i = 1
SELECT @Text = @Text + N' Năm'
ELSE
BEGIN
IF (@i > 0 AND (@Len - @i + 1)%3 = 1 AND SUBSTRING(@Number, @i - 1, 1) <> '0')
SELECT @Text = @Text + N' lăm'
ELSE SELECT @Text = @Text + N' năm'
END
IF (@i > 1 AND SUBSTRING(@Number, @i, 1) = '1' AND (@Len - @i + 1)%3 = 1 AND SUBSTRING(@Number, @i - 1, 1) > '1')
SELECT @Text = @Text + N' mốt'
ELSE
IF ((@Len - @i + 1)%3 <> 2 AND SUBSTRING(@Number, @i, 1) = '1')
SELECT @Text = @Text + N' Một'
IF ((@Len - @i + 1)%3 = 2 AND SUBSTRING(@Number, @i, 1) <> '0' AND SUBSTRING(@Number, @i, 1) <> '1')
SELECT @Text = @Text + N' mươi'
ELSE
IF ((@Len - @i + 1)%3 = 2 AND SUBSTRING(@Number, @i, 1) <> '0')
SELECT @Text = @Text + N' Mười'
IF ((@Len - @i + 1)%3 = 2 AND SUBSTRING(@Number, @i, 1) = '0' AND SUBSTRING(@Number, @i + 1, 1) <> '0') SELECT @Text = @Text + N' lẻ'
IF ((@Len - @i + 1)%3 = 0 AND (SUBSTRING(@Number, @i + 1, 1) <> '0' OR SUBSTRING(@Number, @i + 2, 1) <> '0'))
SELECT @Text = @Text + N' trăm'
ELSE IF ((@Len - @i + 1)%3 = 0 AND SUBSTRING(@Number, @i, 1) <> '0')
SELECT @Text = @Text + N' trăm'
IF ((@Len - @i + 1) = 4)
SELECT @Text = @Text + N' nghìn'
IF ((@Len - @i + 1) = 7)
SELECT @Text = @Text + N' triệu'
IF ((@Len - @i + 1) = 10)
SELECT @Text = @Text + N' tỷ'
IF ((@Len - @i + 1) = 13)
SELECT @Text = @Text + N' nghìn tỷ'
IF ((@Len - @i + 1) = 16)
SELECT @Text = @Text + N' triệu tỷ'
IF ((@Len - @i + 1) = 19)
SELECT @Text = @Text + N' tỷ tỷ'
IF ((@Len - @i + 1) = 22)
SELECT @Text = @Text + N' triệu tỷ tỷ'
IF ((@Len - @i + 1) = 25)
SELECT @Text = @Text + N' tỷ tỷ tỷ'
IF ((@Len - @i + 1) = 28)
SELECT @Text = @Text + N' triệu tỷ tỷ tỷ'
IF ((@Len - @i + 1)%3 = 0 AND SUBSTRING(@Number, @i, 1) = '0' AND SUBSTRING(@Number, @i + 1, 1) = '0' AND SUBSTRING(@Number, @i + 2, 1) = '0')
SELECT @i = @i + 2
IF (@Len - @i + 1)%3 = 1
BEGIN
SELECT @Flag = 'True'
SELECT @j = @i
WHILE @j <= @Len
BEGIN
IF SUBSTRING(@Number, @j, 1) <> '0'
SELECT @Flag = 'False'
SELECT @j = @j + 1
END
END
IF @Flag = 'True'
BREAK
SELECT @i = @i + 1
END
--QuangPNV
if(LEN(@Text) > 0)
begin
set @Text = LOWER(@Text)
set @Text = UPPER(LEFT(RTRIM(LTRIM(@Text)),1)) + RIGHT(RTRIM(LTRIM(@Text)),LEN(LTRIM(RTRIM(@Text))) - 1)
end
RETURN @Text
END
15 tuyệt chiêu khó nhất của SQL transaction phiên
BEGIN TRANSACTION Tran_Test;
UPDATE _Test SET [content] = 'bang téttt'
IF @@ERROR != 0 -- neu co loi xay ra, rollback
BEGIN
PRINT 'rollback ne';
ROLLBACK TRAN Tran_Test;
END
-----------------
BEGIN TRANSACTION Tran_Test2;
UPDATE _ABC SET noidung = 'noidung'
IF @@ERROR != 0 -- neu co loi xay ra, rollback
BEGIN
PRINT 'rollback ne';
ROLLBACK TRAN Tran_Test2;
END
ROLLBACK TRAN Tran_Test;
--
declare @Tran_Test as varchar(20)
set @Tran_Test='Tran_Test'
declare @Tran_Test2 as varchar(20)
set @Tran_Test2='Tran_Test2'
Commit TRANSACTION @Tran_Test
Commit TRANSACTION @Tran_Test2
14.
UPDATE
Table
SET
Table.col1 = other_table.col1,
Table.col2 = other_table.col2
FROM
Table
INNER JOIN
other_table
ON
Table.id = other_table.id
13.
ALTER
PROCEDURE [dbo].[発番_チェック]
--Numbering_Check
@kid
char(2),
@dno
varchar(9) OUTPUT
AS
INSERT INTO
発番管理(kanriID,odrDay,intSeq) VALUES(@kid,@oday,1)
--Quản lý đánh STT
đơn hàng
SET @seq
= 1
SET
@dno =RIGHT(@oday+RIGHT(1000
+ @seq,3),9)
12. Delete same xóa trùng http://www.codeproject.com/Articles/157977/Remove-Duplicate-Rows-from-a-Table-in-SQL-Server
Remove Duplicate Rows from a Table in SQL Server
Easiest way to delete more than one duplicate row from a table in SQL Server
Introduction
Most of the times, we use primary key or unique key for preventing insertion of duplicate rows in SQL Server. But if we don't use these keys, then it's obvious that duplicate rows could be entered by the user. After inserting duplicate rows into table, it becomes a major issue to delete those duplicate rows. In that time, we need to delete those duplicate rows to resolve the issue. So this topic will help us to delete those duplicate rows from the specific table.Background
I used some basic T-SQL code to accomplish the target. So you don't need to worry to understand this code.Problem
Firstly, we will create a table, where we will insert some duplicate rows to understand the topic properly. Create a table calledATTENDANCE by using the following code:CREATE TABLE [dbo].[ATTENDANCE](
[EMPLOYEE_ID] [varchar](50) NOT NULL,
[ATTENDANCE_DATE] [date] NOT NULL
) ON [PRIMARY]
Now insert some data into this table.INSERT INTO dbo.ATTENDANCE (EMPLOYEE_ID,ATTENDANCE_DATE)VALUES
('A001',CONVERT(DATETIME,'01-01-11',5))
INSERT INTO dbo.ATTENDANCE (EMPLOYEE_ID,ATTENDANCE_DATE)VALUES
('A001',CONVERT(DATETIME,'01-01-11',5))
INSERT INTO dbo.ATTENDANCE (EMPLOYEE_ID,ATTENDANCE_DATE)VALUES
('A002',CONVERT(DATETIME,'01-01-11',5))
INSERT INTO dbo.ATTENDANCE (EMPLOYEE_ID,ATTENDANCE_DATE)VALUES
('A002',CONVERT(DATETIME,'01-01-11',5))
INSERT INTO dbo.ATTENDANCE (EMPLOYEE_ID,ATTENDANCE_DATE)VALUES
('A002',CONVERT(DATETIME,'01-01-11',5))
INSERT INTO dbo.ATTENDANCE (EMPLOYEE_ID,ATTENDANCE_DATE)VALUES
('A003',CONVERT(DATETIME,'01-01-11',5))
After inserting the data, check the data of the below table. If we grouped the employee_id and attendance_date, then A001 and A002 become duplicates.| EMPLOYEE_ID | ATTENDANCE_DATE |
| A001 | 2011-01-01 |
| A001 | 2011-01-01 |
| A002 | 2011-01-01 |
| A002 | 2011-01-01 |
| A002 | 2011-01-01 |
| A003 | 2011-01-01 |
Solution
First, insert anidentity column in that table by using the following code:ALTER TABLE dbo.ATTENDANCE ADD AUTOID INT IDENTITY(1,1)
Now the table data will be like the following table:| EMPLOYEE_ID | ATTENDANCE_DATE | AUTOID |
| A001 | 2011-01-01 | 1 |
| A001 | 2011-01-01 | 2 |
| A002 | 2011-01-01 | 3 |
| A002 | 2011-01-01 | 4 |
| A002 | 2011-01-01 | 5 |
| A003 | 2011-01-01 | 6 |
AUTOID column. Now we will start playing the game with this column.Now use the following code to find out the duplicate rows that exist in the table.
SELECT * FROM dbo.ATTENDANCE WHERE AUTOID NOT IN (SELECT MIN(AUTOID) _
FROM dbo.ATTENDANCE GROUP BY EMPLOYEE_ID,ATTENDANCE_DATE)
The above code will give us the following result:| EMPLOYEE_ID | ATTENDANCE_DATE | AUTOID |
| A001 | 2011-01-01 | 2 |
| A002 | 2011-01-01 | 4 |
| A002 | 2011-01-01 | 5 |
DELETE FROM dbo.ATTENDANCE WHERE AUTOID NOT IN (SELECT MIN(AUTOID) _
FROM dbo.ATTENDANCE GROUP BY EMPLOYEE_ID,ATTENDANCE_DATE)
Now check the data. No duplicate rows exist in the table.Is it too complicated?
11. A chương chuong SQL
DECLARE @barchID AS INT
SET @barchID =78
SELECT dp.[Order], dp.DegreeName, SL = COUNT(he.DegreeCode)
FROM Hrm_Employee he
LEFT JOIN Dic_Degree dp ON he.DegreeCode = dp.Dic_DegreeID
WHERE he.Active = 1
AND (ISNULL(@barchID,0) = '' OR (ISNULL(@barchID,0) <> 0 AND he.Hrm_BranchID = RTRIM(@barchID)))
AND he.Hrm_BranchID=@barchID
GROUP BY dp.[Order], dp.DegreeName
HAVING COUNT(he.DegreeCode) > 0
ORDER BY dp.[Order]
SELECT * FROM Hrm_TimeKeeper_TableList htktl
SELECT * FROM Hrm_TimeKeeper_Shift htks WHERE htks.Hrm_TimeKeeperTableListID=63
DELETE FROM Hrm_TimeKeeper_Shift WHERE Hrm_TimeKeeperTableListID = 63
select Hrm_EmployeeID, EmployeeCode, LastName +' '+FirstName, LaborFrom from Hrm_Employee
select * from Hrm_Employee where LastName like N'%Lê Thị Kim%' -- and Hrm_BranchID=78
update Hrm_Employee set Dic_Work_StatusID=7 where LastName +' '+FirstName like N'%Đặng xuân trường%' and Hrm_BranchID=78
update Hrm_Employee set Dic_Work_StatusID=6 where Hrm_EmployeeID in(2861) and Hrm_BranchID=78
select * from Hrm_Employee where Hrm_BranchID=78
where EmployeeCode like '%03304000%'
LastName like N'%Lê minh%' and
delete Hrm_Employee where LastName like N'%Giáng sinh%' and Hrm_BranchID=78
10. If you want to disable all constraints in the database just run this code:
-- disable all constraints
EXEC sp_msforeachtable "ALTER TABLE ? NOCHECK CONSTRAINT all"
To switch them back on, run: (the print is optional of course and it is just listing the tables)-- enable all constraints
exec sp_msforeachtable @command1="print '?'", @command2="ALTER TABLE ? WITH CHECK CHECK CONSTRAINT all"
9. ALTER TABLE SchoolFee DISABLE TRIGGER trigger_Update_SchoolFee
ALTER TABLE SchoolFee ENABLE TRIGGER trigger_Update_SchoolFee
8.
CREATE TRIGGER trigger_name ON tablename
FOR UPDATE
AS
SET NOCOUNT ON
IF ( UPDATE(Column1) OR UPDATE(Column2))
BEGIN
your sql here
END
Số thứ tự so thu tu STT
SELECT * FROM (
SELECT
ROW_NUMBER() OVER (ORDER BY DateCode ASC) AS rownumber,
DateCode, ClassID
FROM Schedule
) AS foo
WHERE rownumber <= 3
7.
DECLARE @IntVariable int;
DECLARE @SQLString nvarchar(500);
DECLARE @ParmDefinition nvarchar(500);
/* Build the SQL string one time.*/
SET @SQLString =
N'SELECT BusinessEntityID, NationalIDNumber, JobTitle, LoginID
FROM AdventureWorks2012.HumanResources.Employee
WHERE BusinessEntityID = @BusinessEntityID';
SET @ParmDefinition = N'@BusinessEntityID tinyint';
/* Execute the string with the first parameter value. */
SET @IntVariable = 197;
EXECUTE sp_executesql @SQLString, @ParmDefinition,
@BusinessEntityID = @IntVariable;
/* Execute the same string with the second parameter value. */
SET @IntVariable = 109;
EXECUTE sp_executesql @SQLString, @ParmDefinition,
@BusinessEntityID = @IntVariable;
DECLARE @IntVariable int; DECLARE @SQLString nvarchar(500); DECLARE @ParmDefinition nvarchar(500); DECLARE @max_title varchar(30); SET @IntVariable = 197; SET @SQLString = N'SELECT @max_titleOUT = max(JobTitle) FROM AdventureWorks2012.HumanResources.Employee WHERE BusinessEntityID = @level'; SET @ParmDefinition = N'@level tinyint, @max_titleOUT varchar(30) OUTPUT'; EXECUTE sp_executesql @SQLString, @ParmDefinition, @level = @IntVariable, @max_titleOUT=@max_title OUTPUT; SELECT @max_title;
6. CASE
WHEN dbo.SchoolFee.MonthSchoolFee IS NOT NULL THEN
SUBSTRING(CAST(dbo.SchoolFee.MonthSchoolFee AS CHAR(6)),5, 2) + '/' + SUBSTRING(CAST(dbo.SchoolFee.MonthSchoolFee AS CHAR(6)), 1, 4)
END AS 'MonthSchoolFee',
CASE dbo.SchoolFee.MonthSchoolFee
WHEN NULL THEN ''
ELSE
SUBSTRING(CAST(dbo.SchoolFee.MonthSchoolFee AS CHAR(6)),5, 2) + '/' + SUBSTRING(CAST(dbo.SchoolFee.MonthSchoolFee AS CHAR(6)), 1, 4)
END AS 'MonthSchoolFee',
5.
Declare Tb_Cur Cursor
For Select Hrm_EmployeeID From [#tem_TKNS]
Open Tb_Cur
Fetch Next From Tb_Cur Into @Hrm_EmployeeID
While @@FETCH_STATUS = 0
Begin
SELECT TOP (1) @ResolutionCoefficient=ResolutionCoefficient, @TitleCoefficient=TitleCoefficient
FROM Hrm_Contract WHERE EmployeeID=@Hrm_EmployeeID AND IsCurrent=1
--
--select @ResolutionCoefficient AS 'here'
UPDATE [#tem_TKNS] SET ResolutionCoefficient=@ResolutionCoefficient, TitleCoefficient=@TitleCoefficient
WHERE Hrm_EmployeeID=@Hrm_EmployeeID
Fetch Next From Tb_Cur Into @Hrm_EmployeeID
End
Close Tb_Cur;
Deallocate Tb_Cur;
4.
| Date Format | Standard | SQL Statement | Sample Output |
| Mon DD YYYY 1 HH:MIAM (or PM) |
Default | SELECT CONVERT(VARCHAR(20), GETDATE(), 100) | Jan 1 2005 1:29PM 1 |
| MM/DD/YY | USA | SELECT CONVERT(VARCHAR(8), GETDATE(), 1) AS [MM/DD/YY] | 11/23/98 |
| MM/DD/YYYY | USA | SELECT CONVERT(VARCHAR(10), GETDATE(), 101) AS [MM/DD/YYYY] | 11/23/1998 |
| YY.MM.DD | ANSI | SELECT CONVERT(VARCHAR(8), GETDATE(), 2) AS [YY.MM.DD] | 72.01.01 |
| YYYY.MM.DD | ANSI | SELECT CONVERT(VARCHAR(10), GETDATE(), 102) AS [YYYY.MM.DD] | 1972.01.01 |
| DD/MM/YY | British/French | SELECT CONVERT(VARCHAR(8), GETDATE(), 3) AS [DD/MM/YY] | 19/02/72 |
| DD/MM/YYYY | British/French | SELECT CONVERT(VARCHAR(10), GETDATE(), 103) AS [DD/MM/YYYY] | 19/02/1972 |
| DD.MM.YY | German | SELECT CONVERT(VARCHAR(8), GETDATE(), 4) AS [DD.MM.YY] | 25.12.05 |
| DD.MM.YYYY | German | SELECT CONVERT(VARCHAR(10), GETDATE(), 104) AS [DD.MM.YYYY] | 25.12.2005 |
| DD-MM-YY | Italian | SELECT CONVERT(VARCHAR(8), GETDATE(), 5) AS [DD-MM-YY] | 24-01-98 |
| DD-MM-YYYY | Italian | SELECT CONVERT(VARCHAR(10), GETDATE(), 105) AS [DD-MM-YYYY] | 24-01-1998 |
| DD Mon YY 1 | - | SELECT CONVERT(VARCHAR(9), GETDATE(), 6) AS [DD MON YY] | 04 Jul 06 1 |
| DD Mon YYYY 1 | - | SELECT CONVERT(VARCHAR(11), GETDATE(), 106) AS [DD MON YYYY] | 04 Jul 2006 1 |
| Mon DD, YY 1 | - | SELECT CONVERT(VARCHAR(10), GETDATE(), 7) AS [Mon DD, YY] | Jan 24, 98 1 |
| Mon DD, YYYY 1 | - | SELECT CONVERT(VARCHAR(12), GETDATE(), 107) AS [Mon DD, YYYY] | Jan 24, 1998 1 |
| HH:MM:SS | - | SELECT CONVERT(VARCHAR(8), GETDATE(), 108) | 03:24:53 |
| Mon DD YYYY HH:MI:SS:MMMAM (or PM) 1 | Default + milliseconds |
SELECT CONVERT(VARCHAR(26), GETDATE(), 109) | Apr 28 2006 12:32:29:253PM 1 |
| MM-DD-YY | USA | SELECT CONVERT(VARCHAR(8), GETDATE(), 10) AS [MM-DD-YY] | 01-01-06 |
| MM-DD-YYYY | USA | SELECT CONVERT(VARCHAR(10), GETDATE(), 110) AS [MM-DD-YYYY] | 01-01-2006 |
| YY/MM/DD | - | SELECT CONVERT(VARCHAR(8), GETDATE(), 11) AS [YY/MM/DD] | 98/11/23 |
| YYYY/MM/DD | - | SELECT CONVERT(VARCHAR(10), GETDATE(), 111) AS [YYYY/MM/DD] | 1998/11/23 |
| YYMMDD | ISO | SELECT CONVERT(VARCHAR(6), GETDATE(), 12) AS [YYMMDD] | 980124 |
| YYYYMMDD | ISO | SELECT CONVERT(VARCHAR(8), GETDATE(), 112) AS [YYYYMMDD] | 19980124 |
| DD Mon YYYY HH:MM:SS:MMM(24h) 1 | Europe default + milliseconds | SELECT CONVERT(VARCHAR(24), GETDATE(), 113) | 28 Apr 2006 00:34:55:190 1 |
| HH:MI:SS:MMM(24H) | - | SELECT CONVERT(VARCHAR(12), GETDATE(), 114) AS [HH:MI:SS:MMM(24H)] | 11:34:23:013 |
| YYYY-MM-DD HH:MI:SS(24h) | ODBC Canonical | SELECT CONVERT(VARCHAR(19), GETDATE(), 120) | 1972-01-01 13:42:24 |
| YYYY-MM-DD HH:MI:SS.MMM(24h) | ODBC Canonical (with milliseconds) |
SELECT CONVERT(VARCHAR(23), GETDATE(), 121) | 1972-02-19 06:35:24.489 |
| YYYY-MM-DDTHH:MM:SS:MMM | ISO8601 | SELECT CONVERT(VARCHAR(23), GETDATE(), 126) | 1998-11-23T11:25:43:250 |
| DD Mon YYYY HH:MI:SS:MMMAM 1 | Kuwaiti | SELECT CONVERT(VARCHAR(26), GETDATE(), 130) | 28 Apr 2006 12:39:32:429AM 1 |
| DD/MM/YYYY HH:MI:SS:MMMAM | Kuwaiti | SELECT CONVERT(VARCHAR(25), GETDATE(), 131) | 28/04/2006 12:39:32:429AM |
3. convert datetime to date chuyển đổi sql server
SELECT CONVERT(VARCHAR(8), GETDATE(), 3) AS [DD/MM/YY]
------------------
2. SELECT CONVERT(VARCHAR(10), GETDATE(), 103) AS [DD/MM/YYYY]
DECLARE @identity AS INT
SET @identity=0
Set nocount on
Insert into Process_Reward (RecipientID,PersonID,RewardCode,Foundation,Reason,Object,Form,Source,TotalValue,Status,Date,DecideNumber,DecideDate,Active)
values(@RecipientID,@PersonID,@RewardCode,@Foundation,@Reason,@Object,@Form,@Source,@TotalValue,@Status,@Date,@DecideNumber,@DecideDate,@Active)
SET @identity=@@IDENTITY
INSERT INTO Process_Reward_Employee
(
EmployeeID,
Process_RewardID, ACTIVE
)
VALUES
(
@EmployeeID, @identity, 'TRUE'
)
return @@identity
............
Update Process_Reward set RecipientID=@RecipientID,PersonID=@PersonID,RewardCode=@RewardCode,Foundation=@Foundation,Reason=@Reason,Object=@Object,Form=@Form,Source=@Source,TotalValue=@TotalValue,Status=@Status,Date=@Date,DecideNumber=@DecideNumber,DecideDate=@DecideDate,Active=@Active
where Process_RewardID=@Process_RewardID
exec USP_Process_Reward_Employee_Update @EmployeeID, @Process_RewardID, 'TRUE'
...........
Không có nhận xét nào:
Đăng nhận xét