Comment obtenir le premier caractère d'une chaîne dans SQL?
J'ai une colonne SQL d'une longueur de 6. Veulent maintenant prendre uniquement le premier caractère de cette colonne. Y a-t-il une fonction de chaîne dans SQL pour le faire?
7 réponses
LEFT(colName, 1)
fera aussi cela, aussi. C'est équivalent à SUBSTRING(colName, 1, 1)
.
J'aime LEFT
, puisque je le trouve un peu plus propre, mais vraiment, il n'y a pas de différence de toute façon.
Je préfère:
SUBSTRING (my_column, 1, 1)
Parce que c'est la syntaxe SQL-92 Standard et donc plus portable.
Strictement parlant, la version standard serait
SUBSTRING (my_column FROM 1 FOR 1)
Le point est, transformer de l'un à l'autre, donc à toute variation de fournisseur similaire, est trivial.
P. s. Il m'a été récemment signalé que les fonctions en SQL standard sont délibérément contraires, en ayant des listes de paramètres qui ne sont pas les commalistes conventionnels, afin de les rendre facilement identifiables comme étant de la norme!
SUBSTRING ( MyColumn, 1 , 1 )
pour le premier caractère et SUBSTRING ( MyColumn, 1 , 2 )
pour les deux premiers.
Il est simple d'y parvenir en suivant:
DECLARE @SomeString NVARCHAR(20) = 'This is some string'
DECLARE @Result NVARCHAR(20)
Et soit
SET @Result = SUBSTRING(@SomeString, 2, 3)
SELECT @Result
@Résultat: his
OU
SET @Result = LEFT(@SomeString, 6)
SELECT @Result
@Résultat: This i
SELECT SUBSTR(thatColumn, 1, 1) As NewColumn from student
Entrée
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
Si vous recherchez le premier caractère de string dans Sql string
SELECT CHARINDEX('char', 'my char')
=> return 4