Преобразовать столбец JSON в строку

Он не отвечает на вопрос, но полезным решением является проверка

edQuantity.validity.valid

. Объект ValidityState дает информацию о том, что пользователь вводил. Рассмотрим вход type="number" с установками min и max


Мы всегда хотим использовать .validity.valid.

Другие свойства предоставляют только информацию о бонусе:

Users Input   .value  .valid | .badInput  .rangeUnderflow  .rangeOverflow
============  ======  ====== | =========  ===============  ==============
""            ""      true   | false      false            false  ;valid because field not marked required
"1"           "1"     true   | false      false            false  
"10"          "10"    true   | false      false            false
"0"           "0"     false  | false      true             false  ;invalid because below min
"11"          "11"    false  | false      false            true   ;invalid because above max
"q"           ""      false  | true       false            false  ;invalid because not number
"³"           ""      false  | true       false            false  ;superscript digit 3
"٣"           ""      false  | true       false            false  ;arabic digit 3
"₃"           ""      false  | true       false            false  ;subscript digit 3

Вы должны убедиться, что браузер поддерживает проверку HTML5 до его использования:

function ValidateElementAsNumber(element)
{
   if ((element.validity) && (!element.validity.valid))
   {
      //if html5 validation says it's bad: it's bad
      return false;
   }

   //Fallback to browsers that don't yet support html5 input validation
   //Or we maybe want to perform additional validations
   var value = StrToInt(element.value);
   if (value != null)
      return true;
   else
      return false;
}

Бонус

У Spudly есть полезный ответ, который он удалил:

Просто используйте селектор CSS :invalid для этого.

input[type=number]:invalid {
    background-color: #FFCCCC;
}

Это

Поддержка браузера для примерно такая же, как :invalid, поэтому проблем нет.

Подробнее о :invalid здесь .

Примечание: Любой код выдается в общедоступное доменное имя. Не требуется атрибуция.

0
задан Storm 22 February 2019 в 12:31
поделиться

1 ответ

Это должно сделать это

DECLARE @TABLE      TABLE ( [COLUMN_NAME] sysname );

INSERT INTO @TABLE VALUES 
( 'COL1' ),
( 'COL2' ),
( 'COL3' ),
( 'COL4' ),
( 'COL5' );

DECLARE @json NVARCHAR(MAX) = 
(
    SELECT N'DECLARE @' + REPLACE( COLUMN_NAME, ' ', '_' ) AS MyString
    FROM @TABLE
    FOR JSON PATH
)

SELECT JSON_VALUE(value,'$.MyString') AS 'JSON Transform'
FROM OPENJSON(@json,' 

Результаты

+--------------+
|JSON Transform|
+--------------+
| DECLARE @COL1|
| DECLARE @COL2|
| DECLARE @COL3|
| DECLARE @COL4|
| DECLARE @COL5|
+--------------+

Эта ссылка поможет вам понять функции OPENJSON и JSON_VALUE, Выражения JSON Path [114 ]

)

Результаты

+--------------+
|JSON Transform|
+--------------+
| DECLARE @COL1|
| DECLARE @COL2|
| DECLARE @COL3|
| DECLARE @COL4|
| DECLARE @COL5|
+--------------+

Эта ссылка поможет вам понять функции OPENJSON и JSON_VALUE, Выражения JSON Path [114 ]

0
ответ дан Jason 22 February 2019 в 12:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: