Do not input private or sensitive data. View Qlik Privacy & Cookie Policy.
Skip to main content

Announcements
Qlik Open Lakehouse is Now Generally Available! Discover the key highlights and partner resources here.
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

LEN function in SQL

Hi Guys,

Can anyone think of a reason why the Len function doesn't work in SQL I'm using LEN(fieldname) just keeps telling me the function does not exist 😕

1 Solution

Accepted Solutions
happydays1967
Creator
Creator

SQL SELECT

  tmp_oap.orderatomid as service_id,

  max(if(tmp_ap.flagged_parameter =1, orderatomparam_displayval(tmp_oap.orderatomparamid),'-')) as  parameter_flag1,

  max(if(tmp_ap.flagged_parameter =2, orderatomparam_displayval(tmp_oap.orderatomparamid),'-')) as  parameter_flag2,

  max(if(tmp_ap.flagged_parameter =3, orderatomparam_displayval(tmp_oap.orderatomparamid),'-')) as  parameter_flag3,

  max(if(tmp_ap.flagged_parameter =4, orderatomparam_displayval(tmp_oap.orderatomparamid),'-')) as  parameter_flag4,

  max(if(tmp_ap.flagged_parameter=1,orderatomparam_displayval(tmp_oap.orderatomparamid),'')) as parameter_flag1

  max(if(tmp_ap.flagged_parameter =5, orderatomparam_displayval(tmp_oap.orderatomparamid),'-')) as  parameter_flag5,

  max(if(tmp_ap.flagged_parameter =6, orderatomparam_displayval(tmp_oap.orderatomparamid),'-')) as  parameter_flag6,

  max(if(tmp_ap.flagged_parameter =7, orderatomparam_displayval(tmp_oap.orderatomparamid),'-')) as  parameter_flag7

FROM

  orderatomparams tmp_oap INNER JOIN atomparams tmp_ap ON (tmp_ap.atomparamid = tmp_oap.atomparamid)

  INNER JOIN orderatoms oa ON (tmp_oap.orderatomid = oa.orderatomid)         

WHERE

  --tmp_ap.flagged_parameter >= '1' AND -- then you will not get flag 3-7!!!!

--  tmp_oap.orderatomid = oa.orderatomid AND --> redundant clause, as this is already your join clause

  oa.daterecognised > '01/03/2015' AND

  orderatomparam_displayval(tmp_oap.orderatomparamid) IS NOT NULL

AND 1=1

          

GROUP BY

  tmp_oap.orderatomid

;

Try that...

HP

View solution in original post

28 Replies
awhitfield
Partner - Champion
Partner - Champion

An Example of the syntax to use is as follows:

Copy

SELECT LEN(FirstName) AS Length, FirstName, LastName 
FROM Sales.vIndividualCustomer
WHERE CountryRegionName = 'Australia';
GO
awhitfield
Partner - Champion
Partner - Champion

What's your actual select query?

peter_turner
Partner - Specialist
Partner - Specialist

Hello Sarah,

That should work ok (works in my SQL 2008, and i think its the same in 2012)

For example:

Your_QV_Table:

Load

LenOfField,

Other_Fields

;

SQL SELECT

len(YourField) as LenOfField,

Other_Fields

From YourTable;

You can always make your query in the SQL Management Console to test it first, and then copy/paste into QV script.

buzzy996
Master II
Master II

in sql server --LEN (Transact-SQL)

in qlikview ---

len( s ) Length of string s. The result is an integer.

Example:

len( Name ) where Name = 'Peter' returns 5.

check ur datatype.

Not applicable
Author

thankyou for helping the query is this -

SQL SELECT
  
   tmp_oap.orderatomid as service_id,
  
  
   if(tmp_ap.flagged_parameter=1,orderatomparam_displayval(tmp_oap.orderatomparamid),'') as parameter_flag1
  
//   if(tmp_ap.flagged_parameter =1, orderatomparam_displayval(tmp_oap.orderatomparamid),'-') as   parameter_flag1,
//   if(tmp_ap.flagged_parameter =2, orderatomparam_displayval(tmp_oap.orderatomparamid),'-') as   parameter_flag2,
//   if(tmp_ap.flagged_parameter =3, orderatomparam_displayval(tmp_oap.orderatomparamid),'-') as   parameter_flag3,
//   if(tmp_ap.flagged_parameter =4, orderatomparam_displayval(tmp_oap.orderatomparamid),'-') as   parameter_flag4,
//  
//   if(tmp_ap.flagged_parameter =5, orderatomparam_displayval(tmp_oap.orderatomparamid),'-') as   parameter_flag5,
//  
//   if(tmp_ap.flagged_parameter =6, orderatomparam_displayval(tmp_oap.orderatomparamid),'-') as   parameter_flag6,
//        if(tmp_ap.flagged_parameter =7, orderatomparam_displayval(tmp_oap.orderatomparamid),'-') as   parameter_flag7
//          

        FROM
            orderatomparams tmp_oap
            INNER JOIN atomparams tmp_ap  ON (tmp_ap.atomparamid = tmp_oap.atomparamid)
            INNER JOIN orderatoms oa ON (tmp_oap.orderatomid = oa.orderatomid)         
        WHERE
            tmp_ap.flagged_parameter>='1'
           AND  tmp_oap.orderatomid = oa.orderatomid
           AND oa.daterecognised > '01/03/2015'
           AND NOT orderatomparam_displayval(tmp_oap.orderatomparamid)IS NULL
          
GROUP by tmp_oap.orderatomid, tmp_ap.flagged_parameter,tmp_oap.orderatomparamid
;

I was looking to have a table like this

Serviceid , Parameter 1 , Parameter 2 Parameter 3

ID1             (NULL VALUES)

ID1            Address

For some reason for each parameter it was giving me an extra line for null values do you know how to get around this ?

Thanks

Sarah

Not applicable
Author

error.png

buzzy996
Master II
Master II

can u comment this line and try,

AND NOT orderatomparam_displayval(tmp_oap.orderatomparamid)IS NULL

Not applicable
Author

Heres an example of the error message im getting when I use len I haven't come across this one before 😕

PrashantSangle

Hi,

Add below in where clause

1=1

Try below

SQL SELECT
 
  tmp_oap.orderatomid as service_id,
 
 
  if(tmp_ap.flagged_parameter=1,orderatomparam_displayval(tmp_oap.orderatomparamid),'') as parameter_flag1
 
//  if(tmp_ap.flagged_parameter =1, orderatomparam_displayval(tmp_oap.orderatomparamid),'-') as  parameter_flag1,
//  if(tmp_ap.flagged_parameter =2, orderatomparam_displayval(tmp_oap.orderatomparamid),'-') as  parameter_flag2,
//  if(tmp_ap.flagged_parameter =3, orderatomparam_displayval(tmp_oap.orderatomparamid),'-') as  parameter_flag3,
//  if(tmp_ap.flagged_parameter =4, orderatomparam_displayval(tmp_oap.orderatomparamid),'-') as  parameter_flag4,
// 
//  if(tmp_ap.flagged_parameter =5, orderatomparam_displayval(tmp_oap.orderatomparamid),'-') as  parameter_flag5,
// 
//  if(tmp_ap.flagged_parameter =6, orderatomparam_displayval(tmp_oap.orderatomparamid),'-') as  parameter_flag6,
//        if(tmp_ap.flagged_parameter =7, orderatomparam_displayval(tmp_oap.orderatomparamid),'-') as  parameter_flag7
//        

        FROM
            orderatomparams tmp_oap
            INNER JOIN atomparams tmp_ap  ON (tmp_ap.atomparamid = tmp_oap.atomparamid)
            INNER JOIN orderatoms oa ON (tmp_oap.orderatomid = oa.orderatomid)         
        WHERE
            tmp_ap.flagged_parameter>='1'
          AND  tmp_oap.orderatomid = oa.orderatomid
          AND oa.daterecognised > '01/03/2015'
          AND NOT orderatomparam_displayval(tmp_oap.orderatomparamid)IS NULL

AND 1=1
          
GROUP by tmp_oap.orderatomid, tmp_ap.flagged_parameter,tmp_oap.orderatomparamid
;

Regards,

Great dreamer's dreams never fulfilled, they are always transcended.
Please appreciate our Qlik community members by giving Kudos for sharing their time for your query. If your query is answered, please mark the topic as resolved 🙂