Logo

MCOLS

Updated 2023-10-19 14:02:44.257000

Syntax

SELECT [westclintech].[wct].[MCOLS](
   <@Matrix, nvarchar(max),>)

Description

Use the scalar function MCOLS to find the number of columns in the string representation of a matrix. MCOLS expects a string representation of the matrix, with columns separated by commas and rows separated by semi-colons.

Arguments

@Matrix

a string representation of a matrix.

Return Type

int

Remarks

The string representations of @Matrix must only contain numbers, commas (to separate the columns), and semi-colons to separate the rows.

Consecutive commas will generate an error.

Consecutive semi-colons will generate an error.

Non-numeric data between commas will generate an error

Non-number data between semi-colons will generate an error

To convert non-normalized data to a string format, use the Matrix2String or the Matrix2String_q function.

To convert normalized data to a string format, us the NMatrix2String or the NMatrix2String_q function.

Examples

Let’s assume that we had the following matrices A and we want to know the number of columns in the matrix.

A = [-79,-45,9,9,-91,-5;68,46,9,81,-61,35;83,-25,80,-67,-22,-38;77,40,-24,69,73,-20;-17,-72,-9,-72,-6,-34;64,-47,48,-54,18,11;-4,-36,7,-56,-34,-3;-41,90,78,-43,38,64;-60,-85,-31,-83,-96,-36;-40,31,-93,-62,64,10]

We could enter the following SQL to perform the calculation.

DECLARE @A as varchar(max);

SET @A

    = '-79,-45,9,9,-91,-5;68,46,9,81,-61,35;83,-25,80,-67,-22,-38;77,40,-24,69,73,

              -20;-17,-72,-9,-72,-6,-34;64,-47,48,-54,18,11;-4,-36,7,-56,-34,-3;

              -41,90,78,-43,38,64;-60,-85,-31,-83,-96,-36;-40,31,-93,-62,64,10';

SELECT wct.MCOLS(@A) as [Columns];

This produces the following result.

{"columns":[{"field":"Columns","headerClass":"ag-right-aligned-header","cellClass":"ag-right-aligned-cell"}],"rows":[{"Columns":"6"}]}

The matrix does not have to be assigned to a variable before passed into the MCOLS function; the string can be passed in directly.

SELECT wct.MCOLS('-79,-45,9,9,-91,-5;68,46,9,81,-61,35;83,-25,80,-67,-22,-38;77,

          40,-24,69,73,-20;-17,-72,-9,-72,-6,-34;64,-47,48,-54,18,11;-4,-36,7,-56,

          -34,-3;-41,90,78,-43,38,64;-60,-85,-31,-83,-96,-36;-40,31,-93,-62,64,10')

          as [Columns];

This produces the following result.

{"columns":[{"field":"Columns","headerClass":"ag-right-aligned-header","cellClass":"ag-right-aligned-cell"}],"rows":[{"Columns":"6"}]}