如何在 SQL Server 2012 中的更新SQL语句中自动用空格填充空格到预定长度?
我有一个包含多个列的表,如
NULL or ''
等等。
如果列的值为NULL or ''
,我将带有空格的列更新为预定长度(列的长度)。
对于Col3,如果值为' '
,则空格为200个空格('abcd'
)
如果值有任何字符1) Value = NULL , Col1 value = ' ' (10 spaces)
2) Value = '' , Col1 value = ' ' (10 spaces)
2) Value = 'abc' , Col1 value = 'abc ' (abc and 7 spaces)
,则填充(右键)到200个空格。然后,最后4个不是空格字符和196个空格字符。
例如,Col1的长度为10。
select column_name, data_type, character_maximum_length
from information_schema.columns
where table_name = 'myTable'
如何在UPDATE SQL中执行此操作?
也许正在使用
SELECT COL_LENGTH('Table', 'Column')
或
<form action="login.php" method="post" id="clientLogin" onsubmit="return C1heckFields()">
<!--?php csrf_token(); ?-->
<strong></strong>
<br>
<div>
<label for="email">Логин:</label>
<input id="myl" type="text" name="login" size="16" value="">
</div>
<div>
<label for="ticketno">Пароль:</label>
<input id="ticketno" type="password" name="password" size="16" value="">
</div>
<p>
<input class="btn" type="submit" value="Войти">
</p>
</form>
How to get the size of a varchar[n] field in one SQL statement?
中的更多内容答案 0 :(得分:3)
尝试以下操作,LEFT用于将长度保持为列长度,而空间确保字段填充空格:
create table test (col1 varchar(10), col2 varchar(15))
GO
insert into test (col1, col2)
values ('', '')
,(NULL, NULL)
,('abc', 'abc')
UPDATE test
SET col1 = LEFT(COALESCE(col1, '') + SPACE(COL_LENGTH('test', 'col1')), COL_LENGTH('test', 'col1'))
,col2 = LEFT(COALESCE(col2, '') + SPACE(COL_LENGTH('test', 'col2')), COL_LENGTH('test', 'col2'))
FROM test
SELECT *
FROM test
答案 1 :(得分:1)
我不明白你想要什么,但这是我理解的:
CREATE TABLE MyTable (
Col1 NVARCHAR(200),
Col2 NVARCHAR(100),
Col3 NVARCHAR(200),
Col4 NVARCHAR(50)
);
INSERT INTO MyTable VALUES (NULL, NULL, NULL, NULL), ('ABC', NULL, NULL, NULL);
-- You can do the same for the other cols
UPDATE MyTABLE
SET Col1 = REPLICATE(' ', COL_LENGTH('MyTable', 'Col1')/2)
WHERE Col1 IS NULL;
SELECT *
FROM MyTable;
<强> Demo 强>
更新
以下是如何在一个声明中执行此操作:
UPDATE MyTABLE
SET Col1 = (SELECT CASE WHEN (Col1 IS NULL) OR (Col1 = '') THEN
REPLICATE(' ', COL_LENGTH('MyTable', 'Col1')/2)
ELSE Col1 + REPLICATE(' ', (COL_LENGTH('MyTable', 'Col1')/2)- LEN(Col1)) END),
Col2 = (SELECT CASE WHEN (Col2 IS NULL) OR (Col2 = '') THEN
REPLICATE(' ', COL_LENGTH('MyTable', 'Col2')/2)
ELSE Col2 + REPLICATE(' ', (COL_LENGTH('MyTable', 'Col2')/2)- LEN(Col2)) END),
Col3 = (SELECT CASE WHEN (Col3 IS NULL) OR (Col3 = '') THEN
REPLICATE(' ', COL_LENGTH('MyTable', 'Col1')/2)
ELSE Col3 + REPLICATE(' ', (COL_LENGTH('MyTable', 'Col3')/2)- LEN(Col3)) END),
Col4 = (SELECT CASE WHEN (Col4 IS NULL) OR (Col4 = '') THEN
REPLICATE(' ', COL_LENGTH('MyTable', 'Col4')/2)
ELSE Col4 + REPLICATE(' ', (COL_LENGTH('MyTable', 'Col4')/2)- LEN(Col4)) END);
<强> Demo 强>