Join the #BuildWithBuildAgent Challenge! Get recognized, earn exclusive swag, and inspire the ServiceNow Community with what you can build using Build Agent.  Join the Challenge.

Max length value of string field is not honoured

Nisar3
Giga Guru

In the sys_dictionary table, I've the following field:

Nisar3_0-1751455792196.png


But ServiceNow is allowing to store a value greater than 30 characters. For eg: It allowed to store a value of "Health and Safety - Customer responsibility" which is 43 characters long.

 

Is this expected?

1 ACCEPTED SOLUTION

SANDEEP DUTTA
Tera Patron
Tera Patron

Hi @Nisar3 ,

When you create a new sys_dictionary record to define a new string field, the max_length is mandatory. Despite the similarity of the name to HTML's maxlength attributes for input or textarea tags, this is not enforced as a limit in the client or server.

Max length is not enforced on the Now Platform

Fields in ServiceNow accept string inputs greater than the sys_dictionary max_length value. This is the expected behavior of the product.

When you create a string field in ServiceNow, the underlying column in the database is created with a default data type based in part on the specified max_length value:

  • Small (40) = varchar(40)
  • Medium (100) = varchar(100)
  • Large (1000) = mediumtext
  • Extra Large (4000) = mediumtext

Refer to below article for more details:

https://support.servicenow.com/kb?id=kb_article_view&sysparm_article=KB0685779

 

Thanks,
Sandeep Dutta

Please mark the answer correct & Helpful, if i could help you.

View solution in original post

11 REPLIES 11

Hi @Nisar3 ,

We do not control database, since ServiceNow is a Saas Platform.

Thanks,
Sandeep Dutta

Please mark the answer correct & Helpful, if i could help you.

I understand we cannot control the database. But what I'm trying to figure out is if there is way to know what size would be set in the database if I use max length = 20 in sys_dictionary.

HI @Nisar3 ,

As per my previous reply, if you use max length = 20 in sys_dictionary then it will be Small (40) = varchar(40).

 

Thanks,
Sandeep Dutta

Please mark the answer correct & Helpful, if i could help you.

Thanks Sandeep for that. I'm still a little confused though. How are you able to come to that conclusion? Is my understanding correct for the following screenshot

Nisar3_0-1751515153881.png

  • If we specify anything less than 40 in dictionary, it will set to varchar(40) at database level
  • Anything less than 100 (but greater than 40) in dictionary, it will set to varchar(100) at database level
  • Anything less than 1000 (but greater than 100) in dictionary, it will set to mediumtext at database level and so on..

 

Is the assumption correct? I would not think so because I've set the value to 30 in dictionary but ServiceNow allowed 43 characters.

Hi @Nisar3 ,

Yes, your assumption is correct.

 

Thanks,
Sandeep Dutta

Please mark the answer correct & Helpful, if i could help you.