Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Fungsi TYPE_NAME yang diperluas yang mencakup panjang data

Awal yang kasar akan seperti ini:

CREATE FUNCTION udf_GetDataTypeAsString
    (
      @user_type_id INT ,
      @Length INT
    )
RETURNS VARCHAR(50)
AS 
    BEGIN
        DECLARE @ReturnStr VARCHAR(50)

        IF @Length = -1 
            SELECT  @ReturnStr = UPPER(name) + '(MAX)'
            FROM    sys.types
            WHERE   user_type_id = @user_type_id
        ELSE 
            SELECT  @ReturnStr = UPPER(name) + '(' + CONVERT(VARCHAR, @Length) + ')'
            FROM    sys.types
            WHERE   user_type_id = @user_type_id

        RETURN @ReturnStr

    END
GO

SELECT dbo.udf_GetDataTypeAsString(167, -1)
--#### Returns VARCHAR(MAX)
SELECT dbo.udf_GetDataTypeAsString(231, 24)
--#### Returns NVARCHAR(24)

Perhatikan bahwa ini hanya sangat bagus untuk tipe data char &hanya menangani panjang, Anda perlu menerapkan sedikit lebih banyak logika jika Anda ingin menggunakan presisi (desimal dll)

Selain itu, Anda mungkin ingin menambahkan validasi untuk hanya mengizinkan panjang -1 pada jenis pengguna tertentu

(Demi rasa ingin tahu – mengapa Anda ingin melakukan ini?)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara membuat DB di SQL Express menggunakan perintah SQL?

  2. Instalasi Cluster Failover SQL Server -1

  3. SQL Server 2016:Impor Data

  4. Bagaimana mengatasi kesalahan panjang maksimum (terlalu panjang) dalam kueri sql c #

  5. Cara menjalankan paket dtsx melalui baris perintah