web-dev-qa-db-fra.com

Comment obtenir le premier caractère d'une chaîne en SQL?

J'ai une colonne SQL avec une longueur de 6. Maintenant, voulez prendre uniquement le premier caractère de cette colonne. Y at-il une fonction de chaîne dans SQL pour faire cela?

212
Vinod

LEFT(colName, 1) le fera également. C'est équivalent à SUBSTRING(colName, 1, 1).

J'aime LEFT, car je le trouve un peu plus propre, mais vraiment, il n'y a pas de différence de toute façon.

377
Eric

Je préfère:

SUBSTRING (my_column, 1, 1)

parce que c'est la syntaxe Standard SQL-92 et donc plus portable.


Strictement parlant, la version standard serait

SUBSTRING (my_column FROM 1 FOR 1)

Le fait est que la transformation de l’un en l’autre, et donc de toute variante de fournisseur similaire, est triviale.

p.s. Ce n'est que récemment que l'on m'a fait remarquer que les fonctions en langage SQL standard sont délibérément contraires, en ayant des listes de paramètres qui ne sont pas des commalistes classiques, afin de les rendre facilement identifiables comme étant du standard!

36
onedaywhen

SUBSTRING ( MyColumn, 1 , 1 ) pour le premier caractère et SUBSTRING ( MyColumn, 1 , 2 ) pour les deux premiers.

14
Damovisa

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

@Result: his

-OU-

SET @Result = LEFT(@SomeString, 6)
SELECT @Result

@Result: This i

7
jet_choong
SELECT SUBSTR(thatColumn, 1, 1) As NewColumn from student
7
Devendra Verma

CONTRIBUTION

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
1
Shiv

Sélectionnez les deux premiers caractères du champ sélectionné avec Left(string,Number of Char in int)

SELECT LEFT(FName, 2) AS FirstName FROM dbo.NameMaster
0
Darshan

Si vous recherchez le premier caractère de chaîne dans la chaîne Sql

SELECT CHARINDEX('char', 'my char')

=> return 4
0
LittleJC