Herramientas Informaticas

Categoría: Uncategorized Página 5 de 12

🧠 Cómo convertir Visual Studio Code en el entorno ideal para PHP en Linux Mint (¡con formato automático como en NetBeans!)

Entrada fija

🧠 Cómo convertir Visual Studio Code en el entorno ideal para PHP en Linux Mint (¡con formato automático como en NetBeans!)

Si vienes de NetBeans y ahora estás usando Visual Studio Code (VS Code), probablemente extrañes esa característica tan útil de formatear automáticamente el código PHP con Ctrl+Shift+F.

¡Buenas noticias! Puedes lograr exactamente lo mismo (¡y mejor!) en VS Code. En esta guía te muestro cómo dejarlo todo listo paso a paso:


✅ Paso 1: Instalar Visual Studio Code en Linux Mint

Abre una terminal y ejecuta estos comandos para agregar el repositorio oficial de Microsoft e instalar VS Code:

sudo apt update
sudo apt install wget gpg
wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > packages.microsoft.gpg
sudo install -o root -g root -m 644 packages.microsoft.gpg /usr/share/keyrings/
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/packages.microsoft.gpg] \
https://packages.microsoft.com/repos/code stable main" | sudo tee /etc/apt/sources.list.d/vscode.list
sudo apt update
sudo apt install code

✅ Paso 2: Instalar PHP y Composer (si no los tienes)

En la misma terminal, instala PHP y sus extensiones comunes:

sudo apt install php-cli php-common php-mbstring php-xml php-curl php-zip php-gd

Y luego Composer:

sudo apt install composer

✅ Paso 3: Instalar extensiones esenciales para PHP

Abre Visual Studio Code y presiona Ctrl+P, luego escribe:

ext install bmewburn.vscode-intelephense-client
ext install kokororin.vscode-phpfmt
ext install xdebug.php-debug

🔹 ¿Qué hace cada extensión?

  • PHP Intelephense: autocompletado, documentación, detección de errores.
  • phpfmt: formatea el código PHP automáticamente (como NetBeans).
  • PHP Debug: permite depurar con Xdebug.

✅ Paso 4: Configurar el formateador por defecto para PHP

Abre VS Code, presiona Ctrl+Shift+P y escribe: Preferencias: Abrir configuración (JSON).

Agrega o edita lo siguiente:

{
  "[php]": {
    "editor.defaultFormatter": "kokororin.vscode-phpfmt",
    "editor.formatOnSave": false
  }
}

¿Prefieres que se formatee al guardar? Cambia formatOnSave a true.


✅ Paso 5: Cambiar el atajo a Alt + Shift + F para formatear (como en NetBeans)

🖱 Opción 1: Desde el menú

  1. Abre VS Code.
  2. Ve a Archivo > Preferencias > Métodos abreviados de teclado.

⌨ Opción 2: Usando atajo

Presiona Ctrl + K y luego Ctrl + S.

Luego:

  1. En la barra de búsqueda escribe: format document.
  2. Ubica la acción: Editor: Format Document.
  3. Haz clic en el lápiz ✎ y selecciona “Cambiar combinación de teclas”.
  4. Presiona: Alt + Shift + F y confirma.

¡Listo! Ahora puedes formatear tu código PHP como lo hacías en NetBeans.


✅ (Opcional) Personaliza el estilo de formato con phpfmt.ini

Para controlar cómo se acomoda el código, crea un archivo phpfmt.ini en tu proyecto o en tu carpeta personal con este contenido:

passes = ["PSR2KeywordsLowerCase", "PSR2LnAfterNamespace", "PSR2CurlyOpenNextLine"]
indent_with_space = true
psr1 = true
psr2 = true

Más opciones en: phpfmt tools (GitHub).


🎯 Resultado final

  • ✅ Código PHP se formatea automáticamente con Alt+Shift+F.
  • ✅ Autocompletado inteligente y validación en tiempo real.
  • ✅ Depuración de código con Xdebug.
  • ✅ Más rápido y moderno que NetBeans.

🗨 Conclusión

Visual Studio Code no solo reemplaza a NetBeans, ¡lo supera!

Ligero, potente, extensible y totalmente configurable, VS Code puede ser tu nuevo editor favorito para proyectos PHP en Linux Mint.

¿Te gustaría una plantilla base ya configurada para clonar desde GitHub? ¡Pídela y te la preparo!


#PHP #VisualStudioCode #LinuxMint #DevTips #NetBeansToVSCode #VSCodePHP #OpenSourceTools #DesarrolloWeb #CodeClean

🐘 Cómo Instalar PHP 8.3 en Linux Mint (Xfce / Cinnamon / Mate)

Entrada fija

🐘 Cómo Instalar PHP 8.3 en Linux Mint (Xfce / Cinnamon / Mate)

¿Estás usando Linux Mint y necesitas instalar PHP 8.3 para tus proyectos web o Laravel? ¡Estás en el lugar correcto! En esta guía paso a paso te muestro cómo instalar PHP 8.3 fácilmente, incluyendo extensiones comunes como intl, curl, mbstring y más.


✅ Requisitos Previos

  • Linux Mint 21.x (basado en Ubuntu)
  • Terminal con acceso sudo

📦 Paso 1: Actualiza tu sistema

sudo apt update && sudo apt upgrade -y

🔗 Paso 2: Agrega el repositorio oficial de PHP

sudo apt install software-properties-common -y
sudo add-apt-repository ppa:ondrej/php -y
sudo apt update

🧰 Paso 3: Instala PHP 8.3 con extensiones recomendadas

sudo apt install php8.3 php8.3-cli php8.3-common php8.3-mbstring php8.3-xml php8.3-mysql php8.3-curl php8.3-zip php8.3-gd php8.3-intl -y

¿Para qué sirve php8.3-intl? Es una extensión muy útil para trabajar con formatos internacionales, fechas, validaciones, y localización. Es requerida por muchos frameworks como Laravel y Symfony.


🔍 Paso 4: Verifica que PHP 8.3 se haya instalado

php -v

Deberías ver algo como:

PHP 8.3.x (cli) (built: ...)

⚙️ Paso 5 (opcional): Configura Apache o Nginx

Apache:

sudo a2dismod php7.4  # o la versión anterior que tengas
sudo a2enmod php8.3
sudo systemctl restart apache2

Nginx:

sudo apt install php8.3-fpm -y
sudo systemctl restart php8.3-fpm
sudo systemctl restart nginx

🎉 ¡Listo!

Ya tienes PHP 8.3 corriendo en tu sistema Linux Mint con todas las extensiones necesarias, incluyendo php8.3-intl. Estás listo para trabajar con Laravel, Symfony, WordPress, o cualquier otro proyecto moderno en PHP.


💬 ¿Tienes dudas o errores?

Déjalos en los comentarios y estaré encantado de ayudarte. 🙌

🎉 ¡Actualización! Ahora tu descargador de YouTube en Python también baja subtítulos

Entrada fija

🎉 ¡Actualización! Ahora tu descargador de YouTube en Python también baja subtítulos

¿Ya creaste tu app para descargar videos de YouTube con interfaz gráfica y arte ASCII? ¡Excelente! Ahora te traigo una mejora súper útil: descargar automáticamente los subtítulos si están disponibles. Aquí te explico qué cambió y cómo funciona.


🆕 ¿Qué incluye esta actualización?

  • ✅ Detecta si hay subtítulos disponibles (en español o inglés).
  • ✅ Los descarga en formato .srt.
  • ✅ Guarda los subtítulos en la misma carpeta que el video.
  • ✅ Notifica al usuario si no hay subtítulos disponibles.

🔧 ¿Cómo funciona?

Cuando pegas la URL del video y haces clic en “Descargar video”, la app ahora:

  1. Descarga el video como antes.
  2. Revisa si el video tiene subtítulos en español (es) o inglés (en).
  3. Si encuentra alguno, los convierte a .srt y los guarda.
  4. Muestra una notificación confirmando ambos archivos (video y subtítulos), o indica que no se encontraron subtítulos.

💡 Detalles técnicos

  • Usa la biblioteca pytubefix para extraer subtítulos.
  • Detecta tanto subtítulos manuales como automáticos (a.en).
  • El archivo de subtítulos se nombra con el título del video, con extensión .srt.

🐍 ¿Necesito actualizar algo?

Sí. Asegúrate de tener la versión más reciente de pytubefix. Puedes instalarla o actualizarla con este comando:

pip install -U pytubefix

📷 Vista general de la app

La app conserva su diseño clásico en consola con una ventana gráfica simple, amigable, y un toque especial con arte ASCII. Ahora además te avisa si los subtítulos están disponibles:

Estado: Video descargado. Subtítulos encontrados y guardados.

O, si no hay subtítulos:

Estado: Video descargado. No se encontraron subtítulos.

🧪 Código completo del programa actualizado


import tkinter as tk
from tkinter import ttk, messagebox, filedialog
from pytubefix import YouTube
import threading
import os

def descargar_video():
    url = entrada_url.get()
    carpeta = ruta_descarga.get()

    if not url:
        messagebox.showwarning("Advertencia", "Por favor, ingresa una URL de YouTube.")
        return

    try:
        boton_descargar.config(state=tk.DISABLED)
        estado.set("Descargando video...")

        yt = YouTube(url)
        video = yt.streams.filter(progressive=True, file_extension='mp4').order_by('resolution').desc().first()

        if not video:
            raise Exception("No se encontró un stream compatible.")

        video_path = video.download(output_path=carpeta)
        estado.set("Video descargado. Buscando subtítulos...")

        # Descargar subtítulos si existen
        captions = yt.captions
        caption = None

        if 'es' in captions:
            caption = captions['es']
        elif 'a.en' in captions:
            caption = captions['a.en']
        elif 'en' in captions:
            caption = captions['en']

        if caption:
            srt = caption.generate_srt_captions()
            titulo_archivo = yt.title.replace(" ", "_").replace("/", "_") + ".srt"
            ruta_srt = os.path.join(carpeta, titulo_archivo)
            with open(ruta_srt, "w", encoding="utf-8") as f:
                f.write(srt)
            estado.set("Video y subtítulos descargados.")
            messagebox.showinfo("Completado", f"Video y subtítulos guardados:\n{video_path}\n{ruta_srt}")
        else:
            estado.set("Video descargado. No se encontraron subtítulos.")
            messagebox.showinfo("Completado", f"Video descargado:\n{video_path}\n(No se encontraron subtítulos)")

    except Exception as e:
        estado.set("Error en la descarga.")
        messagebox.showerror("Error", str(e))
    finally:
        boton_descargar.config(state=tk.NORMAL)

def elegir_carpeta():
    carpeta = filedialog.askdirectory()
    if carpeta:
        ruta_descarga.set(carpeta)

def iniciar_descarga():
    hilo = threading.Thread(target=descargar_video)
    hilo.start()

# Crear ventana
ventana = tk.Tk()
ventana.title("Descargador de YouTube con Subtítulos")
ventana.geometry("600x460")
ventana.resizable(False, False)
ventana.configure(bg="#ffffff")

# Variables
ruta_descarga = tk.StringVar()
estado = tk.StringVar(value="Esperando URL...")

# Arte ASCII
ascii_art = r"""
 __     __     ______     __         ______     __   __    
/\ \  _ \ \   /\  __ \   /\ \       /\  ___\   /\ "-.\ \   
\ \ \/ ".\ \  \ \ \/\ \  \ \ \____  \ \  __\   \ \ \-.  \  
 \ \__/".~\_\  \ \_____\  \ \_____\  \ \_____\  \ \_\\"\_\ 
  \/_/   \/_/   \/_____/   \/_____/   \/_____/   \/_/ \/_/ 
"""
etiqueta_ascii = tk.Label(
    ventana,
    text=ascii_art,
    font=("Courier", 10),
    bg="#ffffff",
    fg="#cc0000",
    justify="left"
)
etiqueta_ascii.pack(pady=(5, 0))

# Estilo
estilo = ttk.Style()
estilo.theme_use("clam")
estilo.configure("TButton", font=("Segoe UI", 10), padding=6)
estilo.configure("TLabel", font=("Segoe UI", 10), background="#ffffff")
estilo.configure("TEntry", font=("Segoe UI", 10))

# Widgets
ttk.Label(ventana, text="URL del video de YouTube:").pack(pady=10)
entrada_url = ttk.Entry(ventana, width=60)
entrada_url.pack(pady=5)

frame_carpeta = ttk.Frame(ventana)
frame_carpeta.pack(pady=10)

ttk.Entry(frame_carpeta, textvariable=ruta_descarga, width=45).pack(side=tk.LEFT, padx=(0, 10))
ttk.Button(frame_carpeta, text="Elegir carpeta", command=elegir_carpeta).pack(side=tk.LEFT)

boton_descargar = ttk.Button(ventana, text="Descargar Video", command=iniciar_descarga)
boton_descargar.pack(pady=15)

ttk.Label(ventana, textvariable=estado, foreground="blue").pack(pady=5)

ventana.mainloop()

🚀 ¿Qué sigue?

Próximas mejoras que puedes añadir:

  • Selección manual de idioma de subtítulos.
  • Conversión automática a .txt.
  • Compatibilidad con listas de reproducción.

¿Te gustaría que te ayude con alguna de estas mejoras? ¡Déjamelo saber en los comentarios!

📘 Manual de instalación de PHP 8.2 en Deepin 23

Entrada fija

📘 Manual de instalación de PHP 8.2 en Deepin 23

Instalación de PHP 8.2 compilado desde fuente, con extensiones clave y configuración por PATH.


🔧 1. Instalar dependencias necesarias

sudo apt update
sudo apt install -y \
  build-essential \
  autoconf \
  bison \
  re2c \
  libxml2-dev \
  libcurl4-openssl-dev \
  libjpeg-dev \
  libpng-dev \
  libwebp-dev \
  libxpm-dev \
  libzip-dev \
  libssl-dev \
  libreadline-dev \
  libonig-dev \
  libicu-dev \
  libxslt-dev \
  pkg-config \
  wget \
  tar \
  unzip

📥 2. Descargar y descomprimir PHP 8.2

cd /tmp
wget https://www.php.net/distributions/php-8.2.18.tar.gz
tar -xzf php-8.2.18.tar.gz
cd php-8.2.18

⚙️ 3. Configurar para compilación

./configure --prefix=/opt/php8 \
  --with-openssl \
  --with-zlib \
  --with-curl \
  --with-readline \
  --enable-mbstring \
  --enable-intl \
  --enable-soap \
  --enable-opcache \
  --enable-bcmath \
  --enable-ftp \
  --enable-exif \
  --enable-sockets \
  --with-zip \
  --with-xsl \
  --with-gettext \
  --with-iconv \
  --with-pdo-mysql \
  --with-mysqli \
  --with-pdo-sqlite \
  --enable-fpm

🧱 4. Compilar e instalar

make -j$(nproc)
sudo make install

🧩 5. Activar PHP 8.2 por defecto usando $PATH

Agrega al final de tu archivo ~/.bashrc:

export PATH=/opt/php8/bin:$PATH

Aplica los cambios con:

source ~/.bashrc

✅ 6. Verificar instalación

php -v

Deberías ver algo como:

PHP 8.2.18 (cli) (built: ...)

🛠️ 7. Crear archivo php.ini (opcional)

sudo cp php.ini-development /opt/php8/lib/php.ini
nano /opt/php8/lib/php.ini

📦 8. Instalar Composer (opcional)

/opt/php8/bin/php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
/opt/php8/bin/php composer-setup.php
sudo mv composer.phar /usr/local/bin/composer

📚 9. Verificar extensiones cargadas

php -m

Debes ver extensiones como:

curl
intl
mbstring
openssl
readline
xsl
zip

📌 10. Alias útiles (opcional)

Agrega también a ~/.bashrc:

alias php="/opt/php8/bin/php"
alias phpize="/opt/php8/bin/phpize"
alias php-config="/opt/php8/bin/php-config"
alias composer="/opt/php8/bin/php /usr/local/bin/composer"

Y aplica con:

source ~/.bashrc

🎉 ¡Listo!

PHP 8.2 está instalado y funcionando con extensiones clave, sin afectar el sistema base de Deepin.

¡Descubre Linux Mint 22.1 “Xia”! Night Light y Rendimiento Potenciado.

Entrada fija

✨ Tu Escritorio, Más Hermoso Que Nunca

Prepárate para enamorarte de Cinnamon 6.4, el entorno de escritorio que se renueva con un tema por defecto espectacular: ¡diseño moderno, esquinas redondeadas y una sensación “flotante” que te encantará! Navegar por tu sistema nunca se vio tan bien.


 Descanso para tus Ojos con Night Light

¡Dile adiós a la fatiga visual! Con la nueva función Night Light, Linux Mint 22.1 ajusta automáticamente el color de tu pantalla para proteger tus ojos, especialmente durante la noche. ¡Tu vista te lo agradecerá! 


 Más Rápido y Eficiente “Bajo el Capó”

No solo es bonito, ¡también es potente! Gracias a la modernización de APT, la gestión de paquetes es ahora más rápida y estable, con traducciones impecables y un rendimiento que notarás. Además, Pipewire es el nuevo servidor de sonido por defecto, lo que significa un audio impecable y una mejor compatibilidad con tus apps favoritas.


 Pequeños Detalles, Gran Diferencia

  • Nemo ahora soporta miniaturas de archivos .ora.
  • Bulky te ayuda a limpiar los nombres de tus archivos.
  • Modos de energía para que tu sistema se adapte a ti.
  • ¡Y mucho más!

Basado en Ubuntu 24.04 LTS y con el Kernel 6.8, “Xia” es sinónimo de estabilidad y soporte a largo plazo hasta 2029.

¿Listo para transformar tu experiencia Linux? ¡Descarga ya Linux Mint 22.1 “Xia” y descubre un sistema operativo diseñado para deleitarte!


¡Corre la voz y comparte esta buena noticia! ¿Cuál es la característica que más te emociona de “Xia”?

¿Por qué deberías usar JOIN en lugar de FROM tabla1, tabla2 con condiciones en WHERE?

Entrada fija

¿Por qué deberías usar JOIN en lugar de FROM tabla1, tabla2 con condiciones en WHERE?

Cuando escribimos consultas SQL que involucran varias tablas, existen dos enfoques comunes para realizar combinaciones (joins) entre ellas:

1. JOIN explícito (moderno y recomendado):


SELECT *
FROM empleados e
JOIN departamentos d ON e.id_departamento = d.id;

2. JOIN implícito (forma antigua):


SELECT *
FROM empleados e, departamentos d
WHERE e.id_departamento = d.id;

Aunque ambos métodos pueden producir los mismos resultados, usar JOIN explícito es la práctica recomendada. Aquí te explicamos por qué:

1. Claridad y legibilidad

El uso de JOIN deja explícita la intención del programador: combinar datos entre tablas mediante una condición clara.

Comparación:


-- JOIN explícito
FROM empleados e
JOIN departamentos d ON e.id_departamento = d.id

-- JOIN implícito
FROM empleados e, departamentos d
WHERE e.id_departamento = d.id

Con más tablas, el estilo implícito se vuelve difícil de leer y mantener.

2. Separación de responsabilidades: combinación vs. filtrado

Con JOIN, las condiciones de unión van en ON, y los filtros en WHERE. Esto mejora la comprensión y evita errores como olvidar una condición de unión.

3. Evita productos cartesianos accidentales

Si olvidas una condición en el estilo implícito, puedes crear un producto cartesiano por accidente:


SELECT *
FROM empleados e, departamentos d;

Esto combinará todas las filas de ambas tablas, lo cual rara vez es lo que se desea.

4. Compatibilidad con OUTER JOIN

El estilo con FROM ... WHERE ... no permite correctamente LEFT, RIGHT o FULL JOIN.


SELECT *
FROM empleados e
LEFT JOIN departamentos d ON e.id_departamento = d.id;

Esto es imposible de hacer con el estilo antiguo sin JOIN.

5. Mejor soporte por los optimizadores de consultas

Los motores SQL modernos analizan mejor las consultas estructuradas con JOIN, permitiendo optimizaciones más eficientes.

🔚 Conclusión

Aunque el estilo implícito aún funciona, su uso está desaconsejado.

Usar JOIN te da:

  • Mayor claridad y mantenimiento.
  • Separación entre unión y filtros.
  • Soporte completo para combinaciones externas.
  • Menos riesgo de errores y resultados inesperados.

En resumen:
Siempre que necesites unir tablas, usa JOIN explícito. Es más claro, más seguro y más flexible.

CodeIgniter 4 Boilerplate Complemento De Pago

Entrada fija
Latest Stable Version
Total Downloads
Latest Unstable Version
License

   

image

CodeIgniter 4 Boilerplate Complemento de Pago

Libreria para generar el complemento de pago de las facturas pagadas en PPD

Requerimientos

  • PhpCfdi\SatCatalogos
  • julio101290/boilerplatelog
  • hermawan/codeigniter4-datatables
  • hermawan/boilerplatesells

Instalación

Ejecutar Comandos

composer require julio101290/boilerplatelog

composer require julio101290/boilerplatecompanies

composer require phpcfdi/sat-catalogos

composer require hermawan/codeigniter4-datatables

composer require julio101290/boilerplatestorages

composer require julio101290/boilerplatetypesmovement

composer require julio101290/boilerplatequotes

composer require julio101290/boilerplatecomprobanterd

composer require julio101290/boilerplatesells

composer require julio101290/boilerplatecomplementopago

Ejecutar comandos de migración y sembrado de base de datos

php spark boilerplatecompanies:installcompaniescrud

php spark boilerplatelog:installlog

php spark boilerplatestorages:installstorages

php spark boilerplatetypesmovement:installtypesmovement

php spark boilerplatequotes:installquotes

php spark boilerplatecomprobanterd:installcomprobanterd

php spark boilerplatequotes:installsells

php spark boilerplatecomplementopago:installcomplementopago

Creamos el Menu, Ejemplo

image

Listo ya podemos hacer complementos de pago

image
image

Usage

You can find how it works with the read code routes, controller and views etc. Finnally… Happy Coding!

Changelog

Please see CHANGELOG for more information what has changed recently.

Contributing

Contributions are very welcome.

License

This package is free software distributed under the terms of the MIT license.

CodeIgniter 4: Herramienta de Respaldo para Bases de Datos

Entrada fija
Latest Stable Version
Total Downloads
Latest Unstable Version
License

CodeIgniter 4 Boilerplate Backup

Esta biblioteca es una extensión del texto estándar de CodeIgniter4, diseñada específicamente para facilitar la interacción con bases de datos a través de un enfoque intuitivo y eficiente. Con una interfaz sencilla de base de datos de copias de seguridad para MariaDB/MySQL, permite a los desarrolladores gestionar respaldos de manera rápida y segura, eliminando la complejidad que a menudo acompaña a estos procesos. Además, cuenta con diversas funcionalidades adicionales, como la programación de tareas automáticas y la restauración fácil de datos, lo que la convierte en una herramienta esencial para aquellos que buscan optimizar el manejo de sus bases de datos en aplicaciones web.

Instalación

Ejecutar el siguiente comando

composer require julio101290/boilerplatbackup

Ejecutar el siguiente comando para crear las tablas y sembrar los datos de los permisos

php spark boilerplatebackup:installbackup

Crear el menú tal cual se ve en la imagen

Listo

Uso

Puede descubrir cómo funciona con las rutas de lectura de código, el controlador y las vistas, etc. Finalmente… ¡Feliz codificación!

Changelog

Please see CHANGELOG for more information what has changed recently.

Contribuciones

Las contribuciones son muy bienvenidas.

License

This package is free software distributed under the terms of the MIT license.

Instalación y Uso de Boilerplate Settings en CodeIgniter 4

Entrada fija

CodeIgniter 4 Boilerplate Settings

Esta biblioteca es una extensión para configuraciones globales de plantilla Boilerplate. Puede guardar el nombre de la compañía, el número de teléfono, el correo electrónico y cambiar el idioma en toda la aplicación CodeIgniter 4.

Instalación

Ejecutar comando

composer require julio101290/boilerplatesettings

Ejecutar el comando para la migración y sembrado

php spark boilerplatesettings:installsettings

Creamos el menu

image

Listo al final queda asi

image

Usage

You can find how it works with the read code routes, controller and views etc. Finnally… Happy Coding!

Changelog

Please see CHANGELOG for more information what has changed recently.

Contributing

Contributions are very welcome.

License

This package is free software distributed under the terms of the MIT license.

Crear Funciones LPAD y RPAD en SQL Server 2012

Entrada fija

Aunque SQL Server 2012 no cuenta con las funciones LPAD y RPAD de forma nativa, podemos crear funciones personalizadas que simulen su comportamiento.

Funciones personalizadas para LPAD y RPAD en SQL Server 2012:

SQL

CREATE FUNCTION dbo.LPAD (@string VARCHAR(MAX), @length INT, @pad_char CHAR(1))
RETURNS VARCHAR(MAX)
AS
BEGIN
    WHILE LEN(@string) < @length
        SET @string = @pad_char + @string;
    RETURN SUBSTRING(@string, 1, @length);
END;

CREATE FUNCTION dbo.RPAD (@string VARCHAR(MAX), @length INT, @pad_char CHAR(1))
RETURNS VARCHAR(MAX)
AS
BEGIN
    WHILE LEN(@string) < @length
        SET @string = @string + @pad_char;
    RETURN SUBSTRING(@string, 1, @length);
END;

Usa el código con precaución.

Explicación:

  • dbo.LPAD:
    • Recibe una cadena, una longitud deseada y un carácter de relleno.
    • Mientras la longitud de la cadena sea menor a la longitud deseada, agrega el carácter de relleno al inicio de la cadena.
    • Finalmente, devuelve un substring de la cadena resultante con la longitud especificada.
  • dbo.RPAD:
    • Funciona de manera similar a LPAD, pero agrega el carácter de relleno al final de la cadena.

Ejemplo de uso:

SQL

SELECT dbo.LPAD('hola', 10, '*') AS resultado_lpad,
       dbo.RPAD('mundo', 10, '-') AS resultado_rpad;

Usa el código con precaución.

Resultado:

resultado_lpadresultado_rpad
******holamundo——-

Exportar a Hojas de cálculo

Consideraciones:

  • Esquema: Asegúrate de reemplazar dbo con el esquema correcto en tu base de datos.
  • Tipos de datos: Estas funciones están diseñadas para cadenas de caracteres (VARCHAR). Puedes adaptarlas para otros tipos de datos si es necesario.
  • Rendimiento: Para un gran volumen de datos, considera crear índices en las columnas relevantes para mejorar el rendimiento de las consultas.
  • Funciones nativas: Si estás utilizando una versión más reciente de SQL Server, es posible que ya cuentes con las funciones LPAD y RPAD de forma nativa. Consulta la documentación de tu versión específica.

Ventajas de crear funciones personalizadas:

  • Flexibilidad: Puedes personalizar las funciones para adaptarse a tus necesidades específicas.
  • Reutilización: Una vez creadas, puedes utilizar estas funciones en múltiples consultas.
  • Legibilidad: El código es más fácil de entender y mantener.

Con estas funciones personalizadas, podrás realizar operaciones de relleno de cadenas en SQL Server 2012 de manera similar a como lo harías con las funciones LPAD y RPAD en otras bases de datos.

OFERTAS MERCADO PAGO

¡Hola! 👋
Te regalo $ 100 de descuento para que uses en Mercado Pago por primera vez.
Aprovéchalo para:
● Comprar en Mercado Libre
● Pagar con Debit Mastercard®
● Recargar tu celular
● Pagar tus servicios
¡El descuento aplica para un pago mínimo de $ 200 y es válido hasta 7 días! 🤑
Descarga la app para activar tu descuento:
https://mpago.li/1C1TreU

OFERTAS CAFFENIO

Quiero regalarte $30 para que disfrutes de una bebida en CAFFENIO. Para aceptarlos, regístrate en https://recomendados.caffenio.com/ncFd1Tuwta

Página 5 de 12

Creado con WordPress & Tema de Anders Norén