Câu trả lời:
LEFT(colName, 1)
cũng sẽ làm điều này, cũng Nó tương đương với SUBSTRING(colName, 1, 1)
.
Tôi thích LEFT
, vì tôi thấy nó sạch hơn một chút, nhưng thực sự, không có sự khác biệt nào cả.
LEFT(colName, length)
trong SUBSTRING(colName, 1, length)
. Vì vậy, không có bất kỳ tối ưu hóa nào ở đây, nó chỉ là một ưu tiên.
Tôi thích:
SUBSTRING (my_column, 1, 1)
bởi vì đó là cú pháp SQL-92 tiêu chuẩn và do đó dễ mang theo hơn.
Nói đúng ra, phiên bản tiêu chuẩn sẽ là
SUBSTRING (my_column FROM 1 FOR 1)
Vấn đề là, chuyển đổi từ cái này sang cái khác, do đó với bất kỳ biến thể nhà cung cấp tương tự nào, là tầm thường.
ps Gần đây tôi mới chỉ ra rằng các hàm trong SQL tiêu chuẩn trái ngược nhau một cách có chủ ý, bằng cách có các danh sách tham số không phải là dấu phẩy thông thường, để làm cho chúng dễ dàng được xác định là từ tiêu chuẩn!
SELECT SUBSTR(thatColumn, 1, 1) As NewColumn from student
Nó là đơn giản để đạt được bằng cách sau đây
DECLARE @SomeString NVARCHAR(20) = 'This is some string'
DECLARE @Result NVARCHAR(20)
Hoặc
SET @Result = SUBSTRING(@SomeString, 2, 3)
SELECT @Result
@Result = his
hoặc là
SET @Result = LEFT(@SomeString, 6)
SELECT @Result
@Result = This i
ĐẦU VÀO
STRMIDDLENAME
--------------
Aravind Chaterjee
Shivakumar
Robin Van Parsee
SELECT STRMIDDLENAME,
CASE WHEN INSTR(STRMIDDLENAME,' ',1,2) != 0 THEN SUBSTR(STRMIDDLENAME,1,1) || SUBSTR(STRMIDDLENAME,INSTR(STRMIDDLENAME,' ',1,1)+1,1)||
SUBSTR(STRMIDDLENAME,INSTR(STRMIDDLENAME,' ',1,2)+1,1)
WHEN INSTR(STRMIDDLENAME,' ',1,1) != 0 THEN SUBSTR(STRMIDDLENAME,1,1) || SUBSTR(STRMIDDLENAME,INSTR(STRMIDDLENAME,' ',1,1)+1,1)
ELSE SUBSTR(STRMIDDLENAME,1,1)
END AS FIRSTLETTERS
FROM Dual;
OUTPUT
STRMIDDLENAME FIRSTLETTERS
--------- -----------------
Aravind Chaterjee AC
Shivakumar S
Robin Van Parsee RVP