J'ai des données comme ça :
string 1: 003Preliminary Examination Plan
string 2: Coordination005
string 3: Balance1000sheet
La sortie que j'attends est
string 1: 003
string 2: 005
string 3: 1000
Et je veux l'implémenter en SQL.
J'ai des données comme ça :
string 1: 003Preliminary Examination Plan
string 2: Coordination005
string 3: Balance1000sheet
La sortie que j'attends est
string 1: 003
string 2: 005
string 3: 1000
Et je veux l'implémenter en SQL.
Créez d'abord ceci UDF
CREATE FUNCTION dbo.udf_GetNumeric
(
@strAlphaNumeric VARCHAR(256)
)
RETURNS VARCHAR(256)
AS
BEGIN
DECLARE @intAlpha INT
SET @intAlpha = PATINDEX('%[^0-9]%', @strAlphaNumeric)
BEGIN
WHILE @intAlpha > 0
BEGIN
SET @strAlphaNumeric = STUFF(@strAlphaNumeric, @intAlpha, 1, '' )
SET @intAlpha = PATINDEX('%[^0-9]%', @strAlphaNumeric )
END
END
RETURN ISNULL(@strAlphaNumeric,0)
END
GO
Utilisez maintenant le function
comme
SELECT dbo.udf_GetNumeric(column_name)
from table_name
J'espère que cela a résolu votre problème.
Essayez celui-là -
Une requête :
DECLARE @temp TABLE
(
string NVARCHAR(50)
)
INSERT INTO @temp (string)
VALUES
('003Preliminary Examination Plan'),
('Coordination005'),
('Balance1000sheet')
SELECT LEFT(subsrt, PATINDEX('%[^0-9]%', subsrt + 't') - 1)
FROM (
SELECT subsrt = SUBSTRING(string, pos, LEN(string))
FROM (
SELECT string, pos = PATINDEX('%[0-9]%', string)
FROM @temp
) d
) t
Salida:
----------
003
005
1000
Une requête :
DECLARE @temp TABLE
(
string NVARCHAR(50)
)
INSERT INTO @temp (string)
VALUES
('003Preliminary Examination Plan'),
('Coordination005'),
('Balance1000sheet')
SELECT SUBSTRING(string, PATINDEX('%[0-9]%', string), PATINDEX('%[0-9][^0-9]%', string + 't') - PATINDEX('%[0-9]%',
string) + 1) AS Number
FROM @temp
Obtenir uniquement des chiffres à partir d'une chaîne de caractères peut être fait en une seule ligne. Essayez ceci :
SUBSTRING('your-string-here', PATINDEX('%[0-9]%', 'your-string-here'), LEN('your-string-here'))
NB : Ne fonctionne que pour le premier int de la chaîne, ex : abc123vfg34 renvoie 123.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.