Run Code
|
API
|
Code Wall
|
Misc
|
Feedback
|
Login
|
Theme
|
Privacy
|
Patreon
Funciones Cadena
####FUNCIONES DE CADENA #### #MySQL 5.7.12 ##INSERCIONES Y SUSTITUCIONES ##INSERT, devuelve cadena1, con una subcadena sustituida por la cadena2 ##INSERT(Cadena1, comienzo, longitud, cadena2) ##LPAD(cadena, longitud_cadena, caracter_rellen) ## Rellena hasta la longitud dada, con el/los caracter/es indicados por la izda ##RPAD ídem por la derecha: rellena hasta N con caracter/es pasados por parámetro Select INSERT('ABCDEFGHI', 3, 2, 'ZZ'), INSERT('ABCDEFGHI', 3, 5, 'ZZZZZ') ,LPAD('ABCDE',10,'Z') ,RPAD('ABCDE',10,'Z') ; #TRIM, RTRIM,LTRIM Elimina los espacios (todos/derecha/izda) Select TRIM(' EL CASO '), RTRIM(' EL CASO '), LTRIM(' EL CASO '); #SPACE Devuelve una cadena de espacios con la longitud del parámetro Select CONCAT('Hola', SPACE(6), 'Paco'); #REPEAT Repite la cadena N veces #REPLACE Reemplaza en una cadena, una subcadena por otra #REVERSE Devuelve la cadena en orden inverso Select REPEAT('Paco', 3) ,REPLACE ('Paco', 'ac', 'oz') ,REVERSE('Paco'); ##Nota: ORD no ordena sino que transforma el código ascii haciendo una suma determinada ##PARTICIONAMIENTO DE UNA CADENA ############################################################ #LEFT(cadena,n) -> Devuelve una subcadena de longitud n, de la cadena, a contar desde la izda. #RIGHT(cadena,n) -> Devuelve una subcadena de longitud n, de la cadena, a contar desde la derecha. Select LEFT('ABCDE', 3), RIGHT('ABCDE', 3); #SUBSTRING devuelve una cadena desde determinada posición, hasta el final o hasta el tercer parámetro #MID es un sinónimo en todo pero sin opción "from... for" #Existe una sintaxis FROM compatible con ANSI 92 Select SUBSTRING('ABCDE', 2), SUBSTRING('ABCDE', 2, 4), SUBSTRING('ABCDE', 2), SUBSTRING('ABCDE', 2, 4), MID('ABCDE', 2, 4), SUBSTRING('ABCDE' FROM 2), SUBSTRING('ABCDE' FROM 2 FOR 4); ##INFORMACIÓN DE LA CADENA #LENGTH y LENGTH_OCTECT, son sinónimos #Devuelven la longitud en bytes, puede haber caracteres que ocupen más de uno Select LENGTH('ABCDE'), OCTET_LENGTH('ABCDE'), LENGTH('ñÑ%&Ç'); #en este caso muestra 8 en vez de 5, porque algunos caracteres ocupan más de un octeto #STRing CoMPare Compara dos cadenas, devuelve 0 si son iguales, 1 si no lo son Select STRCMP("HOLA", "HOLA"); ###TRANSFORMACIONES ### ##LOWER y LCASE convierten la cadena a minúsculas ##UPPER y UCASE convierte la cadena mayúsculas Select LOWER('ABCDE'), LCASE('ABCDE'), LCASE("Alcalá"), UPPER('abcde'), UCASE("Alcalá"); ##ASCII, el caracter en su caracter ASCII Select ASCII('H'), ASCII('O'), ASCII('L'), ASCII('A'); #Devuelve solo el primer caracter ascii, si son varios Select ASCII('Hola') as ASCII; #BIN y BINARY, convierte en binario (devuelve el código binario -> ascii) #Admite que no se utilice el paréntesis Select BIN('H'), BIN('O'), BINARY('A'), BINARY 'A'; ##CHAR, contraria a ascii, transforma los códigos ascii en cadenas #los códigos se separan por comas y pueden ir, o no, entre cadenas simples Select CHAR(77,77.3,'77.3'), char(65,66,67); ##Deberían devolver MySql y ABC, y así lo hace en otros simuladores ##En Rextester no produce esa salida pero son ejemplos de la referencia oficial de MySql #CONVERT (, ), CAST( ..AS...)y CONVERT(...USING ..) #No solo funciona con cadenas SELECT CONVERT ("9", Unsigned integer) ,CAST('test' AS binary) ,CAST('8' AS Unsigned integer) ,CONVERT('abc' USING utf8) ,CONVERT('test', Char Character SET utf8); -- and CONVERT() is that CONVERT(expr,type) is ODBC syntax while CAST(expr as type) and CONVERT(... USING ...) #CONV Convierte números entre dos bases, el primer argumento debe ser una cadena y devuelve una cadena. #Por ejemplo, la a se pasa de hexadecimal a binario, o un "10" decimal a hexadecimal, o a binario #No son imprescindibles las comillas del primer argumento SELECT CONV("a",16,2), CONV("10", 10, 16), CONV("10", 10, 2), CONV(10, 10, 2); #QUOTE Entrecomilla la cadena incluyendo forma correcta para caracteres especiales Select QUOTE("Paco's"); ###CONCATENACIONES #################################################################### ##CONCAT Concatena cadenas o caracteres, sin espacios Select CONCAT('h', 'o', 'l', 'a'), CONCAT('hola', 'y', 'adios'), CONCAT("también", "con" "dobles comillas"); ##CONCAT_WS Concatena cadenas o caracteres, que son separados con el primer caáacter que se indica ##Lo importante es que el primer carácter, o cadena, es el separador Select CONCAT_WS('-', 'h', 'o', 'l', 'a'), CONCAT_WS(' ', 'hola', 'y', 'adios'), CONCAT_WS(" y además ", "Hola", "adiós"); ###BÚSQUEDAS############### #INSTR Busca una subcadena en una cadena, devolviendo la primera posición. #POSITION Sinónimo de INSTR y LOCATE, pero con sintaxis (subcadena IN cadena) #LOCATE Igual a INSTR pero con el orden de los parámetros inverso #LOCATE con tres parámetros, busca a partir de una determinada posición Select INSTR('ABCDE', 'B'), POSITION('B' IN 'ABCDE'), LOCATE('B', 'ABCDE'), LOCATE('B', 'BLABLA', 2); #Comienza a buscar en la posición 2 #FIND_IN_SET Devuelve la posición de un carácter/cadena dentro de una lista (o conjunto=set) # La lista de elementos va encerrada entre comillas y separados por comas (las comillas lo encierran todo) #Atención a los espacios antes y después de las comas, porque busca cadenas incluyendo espacios Select FIND_IN_SET("H", "HOLA"), FIND_IN_SET('L', 'H,O,L,A'), FIND_IN_SET("HOLA", "BUENAS TARDES,HOLA,BUENOS DÍAS"), FIND_IN_SET('HOLA', 'BUENAS TARDES, HOLA , BUENOS DÍAS'); # FIELD Devuelve la posición de una carácter/cadena, entre varias cadenas # La mayor diferencia con FIND_IN_SET son las comillas, aquí una por cada cadena # Siempre se puede utilizar comillas simples o dobles, pero no mezclarse Select FIELD("H", "H", "O", "L", "A"), FIELD("hola", "buenas tardes", "hola", "buenos días"); ##########Búsqueda de patrones y cadenas ############# DROP TABLE IF EXISTS Cadenas; CREATE TABLE Cadenas (Nombre varchar(20)); INSERT INTO Cadenas VALUES ('Eva'), ('Luis'), ('Ana'); -- Select * From Cadenas; #LIKE y NOT LIKE Como en casi todos los lenguajes se puede utilizar LIKE y NOT LIKE #Solo acepta % (cualquier número de caracteres) y _ (ún único carácter) Select nombre as LIKEEva from Cadenas Where Nombre LIKE 'Eva'; Select nombre as NotLike from Cadenas Where Nombre NOT LIKE 'Eva'; Select nombre as LIKE_TantoPorCiento_a from Cadenas Where Nombre LIKE '%a'; Select nombre as LikeE_a from Cadenas Where Nombre LIKE 'E_a'; Select nombre as LikeA_a from Cadenas Where Nombre LIKE 'A_a'; ##En las últimas versiones se acepta también para números ALTER TABLE Cadenas ADD COLUMN Edad integer; UPDATE Cadenas SET Edad=20 where Nombre LIKE 'A%'; UPDATE Cadenas SET Edad=30 where Nombre LIKE 'L%'; Select edad as NumeroConLIKE from Cadenas Where edad LIKE '3%'; #REGEXP/RLIKE Expresiones Regulares (como indica su nombre), muy similar LIKE Select Nombre from Cadenas Where Nombre REGEXP 'Eva'; Select Nombre from Cadenas Where Nombre NOT REGEXP 'Eva'; #Contiene alguna de las letras incluidas entre corchetes Select Nombre as ContieneAEI from Cadenas Where Nombre REGEXP '[aei]'; #Contiene alguna de las letras del rango Select Nombre as RangoA_C from Cadenas Where Nombre REGEXP '[a-c]' ; #Acento circunflejo ^ Comienza por Select Nombre as ComienzaE from Cadenas Where Nombre REGEXP '^E' ; #Signo de dolar $ Acaba por Select Nombre as AcabaA from Cadenas Where Nombre REGEXP '$a' ; #Tanto por ciento % Contiene a precedida de algo Select Nombre as ContieneA from Cadenas Where Nombre REGEXP '%a' ; #Los puntos sirven para indicar número de posiciones #P.ej. Contiene una "a" después de dos posiciones Select Nombre as DosPosicionesA from Cadenas Where Nombre REGEXP '..a'; #P.ej. Contiene una "E", una posición y una "a" Select Nombre as E_A from Cadenas Where Nombre REGEXP 'E.a'; #Los asteriscos y puntos para indicar repetición Select Nombre as Repeticion_A from Cadenas Where Nombre REGEXP 'a.*a'; ##RLIKE es idéntico a REGEXP Select Nombre as ContieneAEI from Cadenas Where Nombre RLIKE '[aei]'; #Contiene alguna de las letras del rango Select Nombre as RangoA_C from Cadenas Where Nombre RLIKE '[a-c]' ; #Acento circunflejo ^ Comienza por Select Nombre as ComienzaE from Cadenas Where Nombre RLIKE '^E' ; #Signo de dolar $ Acaba por Select Nombre as AcabaA from Cadenas Where Nombre RLIKE '$a' ; #Tanto por ciento % Contiene a precedida de algo Select Nombre as ContieneA from Cadenas Where Nombre RLIKE '%a' ; #Los puntos sirven para indicar número de posiciones #P.ej. Contiene una "a" después de dos posiciones Select Nombre as DosPosicionesA from Cadenas Where Nombre RLIKE '..a'; #P.ej. Contiene una "E", una posición y una "a" Select Nombre as E_A from Cadenas Where Nombre RLIKE 'E.a'; #Los asteriscos y puntos para indicar repetición Select Nombre as Repeticion_A from Cadenas Where Nombre RLIKE 'a.*a';
run
|
edit
|
history
|
help
0
Estudiantes
list with indented categories
Pivot Table test
teste
SRINIVAS
kuy09:admin@pkms99.info
school
Employee
Amp
prova