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?

181
demandé sur slartidan 2009-04-27 09:02:48

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.

326
répondu Eric 2012-12-30 09:40:23

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!

33
répondu onedaywhen 2012-03-07 15:25:11

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

12
répondu Damovisa 2009-04-27 05:08:58

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

5
répondu C JC 2016-07-19 07:56:39
SELECT SUBSTR(thatColumn, 1, 1) As NewColumn from student
4
répondu Devendra Verma 2012-11-19 19:56:58

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
1
répondu Shiv 2012-11-19 06:59:05

Si vous recherchez le premier caractère de string dans Sql string

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

=> return 4
0
répondu LittleJC 2016-05-11 15:07:07