6 uzunluğunda bir SQL sütunum var. Şimdi yalnızca bu sütunun ilk karakterini almak istiyorum. Bunu yapmak için SQL'de herhangi bir dize işlevi var mı? Ayrıca, bunu da yapacak olanSQL'de bir dizenin ilk karakteri nasıl alınır?
cevap
LEFT(colName, 1)
. SUBSTRING(colName, 1, 1)
'a eşdeğerdir.
LEFT
'u seviyorum, biraz daha temiz buluyorum, ama gerçekten de, hiçbir şekilde bir fark yok. İlk karakter için ilk karakter ve SUBSTRING (MyColumn, 1 , 2)
için
SUBSTRING (MyColumn, 1 , 1)
.
tercihim:
SUBSTRING (my_column, 1, 1)
o Standart SQL-92 sözdizimi ve dolayısıyla daha taşınabilir olması nedeniyle.
Açıkçası, standart tip dolayısıyla benzer herhangi bir satıcı varyasyonuna, birinden diğerine dönüştürerek
SUBSTRING (my_column FROM 1 FOR 1)
nokta olacaktır, basittir.
p.s. Standart SQL'deki fonksiyonların, standart olarak kolayca tanımlanabilmelerini sağlamak için geleneksel komiserler olmayan parametre listelerine sahip olmanın kasıtlı olarak tersi olduğuna işaret ettim.
Teşekkür ederim, SOL (str, n), pek çok formatta (kullandığım dahil) desteklenmiyor. – GreySage
Sql dizgenin içinde ilk kömürü arama yaparsanız
SELECT CHARINDEX('char', 'my char')
=> return 4
GİRİŞ
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
SELECT SUBSTR(thatColumn, 1, 1) As NewColumn from student
O izleyerek bunu başarmak için basittir:
DECLARE @SomeString NVARCHAR(20) = 'This is some string'
DECLARE @Result NVARCHAR(20)
ve
SET @Result = SUBSTRING(@SomeString, 2, 3)
SELECT @Result
@Result: his
-VEYA-
SET @Result = LEFT(@SomeString, 6)
SELECT @Result
@Result: This i
- 1. C# içindeki bir dizenin ilk ve son karakteri nasıl kaldırılır?
- 2. Bir dizginin son 4 karakteri nasıl alınır?
- 3. İlk 3 karakteri ve son 3 karakteri String PHP'den sil
- 4. Dizenin ilk satırını nasıl okurum?
- 5. TWIG Bir dizenin ilk kelimesini nasıl alabilirim?
- 6. Bir dizenin ilk harfini nasıl değiştirebilirim?
- 7. Geri ilk dizenin baş harfleri
- 8. Bir dizenin ilk karakterini alma ve kaldırma
- 9. Reg ifadesine uymayan ilk karakteri nasıl alabilirim
- 10. Iphone'da UITextField'a ilk karakteri nasıl küçük ekleyebilirim?
- 11. Bir dizenin ilk 10 karakterini mi alıyorsunuz?
- 12. SQL Server'da ilk 100 karakteri nasıl seçebilirim?
- 13. Beyaz boşluk bir dizenin başlangıcından nasıl kaldırılır?
- 14. Bir dizenin bir parçası, parçanın konumuna (int) göre nasıl alınır?
- 15. İlk karakteri seçmenin bir yolu var mı? : İlk harfli
- 16. JQuery'de bir dizenin ilk üç harfini nasıl alabilirim?
- 17. Bir SimpleXML nesnesinin ilk öğesi nasıl alınır?
- 18. İlk işlem nasıl referans alınır?
- 19. İlk X elementleri nasıl alınır?
- 20. İlk karakteri bir bağlantının metninden jQuery ile nasıl kaldırırım?
- 21. Twig: Bir dize içinde ilk karakteri nasıl alabilirim
- 22. Dizenin bir bölümünü nasıl karşılaştırabilirim?
- 23. Whitespaces'ten sonra JTextArea'daki ilk karakteri bulun
- 24. Normal İfade ayıklamak ilk üç karakteri bir dize
- 25. Dizenin bir bölümünü tsql'deki değiştirme işlevini kullanarak nasıl güncellerim?
- 26. Bir dizenin bir bölümünü java'ya nasıl alırsınız?
- 27. Bir dizenin
- 28. İlk işlemden Git farkı nasıl alınır?
- 29. Bir dizenin parçası nasıl kaldırılır?
- 30. Bir karakteri, HTML karakteri ile değiştirin
SQL sunucusu hakkında bilmiyorum ama mantıklı bir veritabanı sunucusu optimize etmek mümkün olabilir Bir endeks kullanırken SUBSTRING'den daha iyi. – thomasrutter
@thomasrutter, Bir yürütme planına bakıldığında, SQL Server (en az 2008R2) dahili olarak "SOL (colName, length)" öğesini SUBSTRING (colName, 1, length) 'olarak çevirir. Yani ** herhangi bir optimizasyon yok ** burada sadece bir tercih. –